toolpalette: Remove
authorBenjamin Otte <otte@redhat.com>
Sat, 3 Feb 2018 10:52:37 +0000 (11:52 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 3 Feb 2018 10:52:37 +0000 (11:52 +0100)
The widget was basically unmaintained since GTK 3.0 and the only known
user was Glade.

17 files changed:
demos/gtk-demo/demo.gresource.xml
demos/gtk-demo/meson.build
demos/gtk-demo/toolpalette.c [deleted file]
docs/reference/gtk/gtk4-docs.xml
docs/reference/gtk/gtk4-sections.txt
docs/reference/gtk/meson.build
docs/reference/gtk/visual_index.xml
docs/tools/widgets.c
gtk/gtk-autocleanups.h
gtk/gtk.h
gtk/gtktoolitemgroup.c [deleted file]
gtk/gtktoolitemgroup.h [deleted file]
gtk/gtktoolpalette.c [deleted file]
gtk/gtktoolpalette.h [deleted file]
gtk/gtktoolpaletteprivate.h [deleted file]
gtk/meson.build
po/POTFILES.in

index 2d69cdad78e42606a79ee253a525854e53d11df9..d28d7e4c65810a2d1d66a5194dd91ee392be0551 100644 (file)
     <file>textview.c</file>
     <file>textscroll.c</file>
     <file>theming_style_classes.c</file>
-    <file>toolpalette.c</file>
     <file>transparent.c</file>
     <file>tree_store.c</file>
     <file>textmask.c</file>
index ed2e58c5df044a176a91748da05e7525af75472b..0364c849e316a8b943d34984f87f6bfc73c04e9d 100644 (file)
@@ -66,7 +66,6 @@ demos = files([
   'textview.c',
   'textscroll.c',
   'theming_style_classes.c',
-  'toolpalette.c',
   'transparent.c',
   'tree_store.c',
 ])
diff --git a/demos/gtk-demo/toolpalette.c b/demos/gtk-demo/toolpalette.c
deleted file mode 100644 (file)
index 83e98b8..0000000
+++ /dev/null
@@ -1,795 +0,0 @@
-/* Tool Palette
- *
- * A tool palette widget shows groups of toolbar items as a grid of icons
- * or a list of names.
- */
-
-#include <string.h>
-#include <gtk/gtk.h>
-
-static GtkWidget *window = NULL;
-
-static void load_icon_items (GtkToolPalette *palette);
-static void load_toggle_items (GtkToolPalette *palette);
-static void load_special_items (GtkToolPalette *palette);
-
-typedef struct _CanvasItem CanvasItem;
-
-struct _CanvasItem
-{
-  GdkPixbuf *pixbuf;
-  gdouble x, y;
-};
-
-static gboolean drag_data_requested_for_drop = FALSE;
-static CanvasItem *drop_item = NULL;
-static GList *canvas_items = NULL;
-
-/********************************/
-/* ====== Canvas drawing ====== */
-/********************************/
-
-static CanvasItem*
-canvas_item_new (GtkWidget     *widget,
-                 GtkToolButton *button,
-                 gdouble        x,
-                 gdouble        y)
-{
-  CanvasItem *item = NULL;
-  const gchar *icon_name;
-  GdkPixbuf *pixbuf;
-  GtkIconTheme *icon_theme;
-
-  icon_name = gtk_tool_button_get_icon_name (button);
-  icon_theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (widget));
-  pixbuf = gtk_icon_theme_load_icon (icon_theme,
-                                     icon_name,
-                                     48,
-                                     GTK_ICON_LOOKUP_GENERIC_FALLBACK,
-                                     NULL);
-
-  if (pixbuf)
-    {
-      item = g_slice_new0 (CanvasItem);
-      item->pixbuf = pixbuf;
-      item->x = x;
-      item->y = y;
-    }
-
-  return item;
-}
-
-static void
-canvas_item_free (CanvasItem *item)
-{
-  g_object_unref (item->pixbuf);
-  g_slice_free (CanvasItem, item);
-}
-
-static void
-canvas_item_draw (const CanvasItem *item,
-                  cairo_t          *cr,
-                  gboolean          preview)
-{
-  gdouble cx = gdk_pixbuf_get_width (item->pixbuf);
-  gdouble cy = gdk_pixbuf_get_height (item->pixbuf);
-
-  gdk_cairo_set_source_pixbuf (cr,
-                               item->pixbuf,
-                               item->x - cx * 0.5,
-                               item->y - cy * 0.5);
-
-  if (preview)
-    cairo_paint_with_alpha (cr, 0.6);
-  else
-    cairo_paint (cr);
-}
-
-static gboolean
-canvas_draw (GtkWidget *widget,
-             cairo_t   *cr)
-{
-  GList *iter;
-
-  cairo_set_source_rgb (cr, 1, 1, 1);
-  cairo_paint (cr);
-
-  for (iter = canvas_items; iter; iter = iter->next)
-    canvas_item_draw (iter->data, cr, FALSE);
-
-  if (drop_item)
-    canvas_item_draw (drop_item, cr, TRUE);
-
-  return TRUE;
-}
-
-/*****************************/
-/* ====== Palette DnD ====== */
-/*****************************/
-
-static void
-palette_drop_item (GtkToolItem      *drag_item,
-                   GtkToolItemGroup *drop_group,
-                   gint              x,
-                   gint              y)
-{
-  GtkWidget *drag_group = gtk_widget_get_parent (GTK_WIDGET (drag_item));
-  GtkToolItem *drop_item = gtk_tool_item_group_get_drop_item (drop_group, x, y);
-  gint drop_position = -1;
-
-  if (drop_item)
-    drop_position = gtk_tool_item_group_get_item_position (GTK_TOOL_ITEM_GROUP (drop_group), drop_item);
-
-  if (GTK_TOOL_ITEM_GROUP (drag_group) != drop_group)
-    {
-      gboolean homogeneous, expand, fill, new_row;
-
-      g_object_ref (drag_item);
-      gtk_container_child_get (GTK_CONTAINER (drag_group), GTK_WIDGET (drag_item),
-                               "homogeneous", &homogeneous,
-                               "expand", &expand,
-                               "fill", &fill,
-                               "new-row", &new_row,
-                               NULL);
-      gtk_container_remove (GTK_CONTAINER (drag_group), GTK_WIDGET (drag_item));
-      gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (drop_group),
-                                  drag_item, drop_position);
-      gtk_container_child_set (GTK_CONTAINER (drop_group), GTK_WIDGET (drag_item),
-                               "homogeneous", homogeneous,
-                               "expand", expand,
-                               "fill", fill,
-                               "new-row", new_row,
-                               NULL);
-      g_object_unref (drag_item);
-    }
-  else
-    gtk_tool_item_group_set_item_position (GTK_TOOL_ITEM_GROUP (drop_group),
-                                           drag_item, drop_position);
-}
-
-static void
-palette_drop_group (GtkToolPalette   *palette,
-                    GtkToolItemGroup *drag_group,
-                    GtkToolItemGroup *drop_group)
-{
-  gint drop_position = -1;
-
-  if (drop_group)
-    drop_position = gtk_tool_palette_get_group_position (palette, drop_group);
-
-  gtk_tool_palette_set_group_position (palette, drag_group, drop_position);
-}
-
-static void
-palette_drag_data_received (GtkWidget        *widget,
-                            GdkDragContext   *context,
-                            gint              x,
-                            gint              y,
-                            GtkSelectionData *selection,
-                            guint             time,
-                            gpointer          data)
-{
-  GtkAllocation     allocation;
-  GtkToolItemGroup *drop_group = NULL;
-  GtkWidget        *drag_palette = gtk_drag_get_source_widget (context);
-  GtkWidget        *drag_item = NULL;
-
-  while (drag_palette && !GTK_IS_TOOL_PALETTE (drag_palette))
-    drag_palette = gtk_widget_get_parent (drag_palette);
-
-  if (drag_palette)
-    {
-      drag_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (drag_palette),
-                                                  selection);
-      drop_group = gtk_tool_palette_get_drop_group (GTK_TOOL_PALETTE (widget),
-                                                    x, y);
-    }
-
-  if (GTK_IS_TOOL_ITEM_GROUP (drag_item))
-    palette_drop_group (GTK_TOOL_PALETTE (drag_palette),
-                        GTK_TOOL_ITEM_GROUP (drag_item),
-                        drop_group);
-  else if (GTK_IS_TOOL_ITEM (drag_item) && drop_group)
-    {
-      gtk_widget_get_allocation (GTK_WIDGET (drop_group), &allocation);
-      palette_drop_item (GTK_TOOL_ITEM (drag_item),
-                         drop_group,
-                         x - allocation.x,
-                         y - allocation.y);
-    }
-}
-
-/********************************/
-/* ====== Passive Canvas ====== */
-/********************************/
-
-static void
-passive_canvas_drag_data_received (GtkWidget        *widget,
-                                   GdkDragContext   *context,
-                                   gint              x,
-                                   gint              y,
-                                   GtkSelectionData *selection,
-                                   guint             time,
-                                   gpointer          data)
-{
-  /* find the tool button, which is the source of this DnD operation */
-
-  GtkWidget *palette = gtk_drag_get_source_widget (context);
-  CanvasItem *canvas_item = NULL;
-  GtkWidget *tool_item = NULL;
-
-  while (palette && !GTK_IS_TOOL_PALETTE (palette))
-    palette = gtk_widget_get_parent (palette);
-
-  if (palette)
-    tool_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (palette),
-                                                selection);
-
-  g_assert (NULL == drop_item);
-
-  /* append a new canvas item when a tool button was found */
-
-  if (GTK_IS_TOOL_ITEM (tool_item))
-    canvas_item = canvas_item_new (widget, GTK_TOOL_BUTTON (tool_item), x, y);
-
-  if (canvas_item)
-    {
-      canvas_items = g_list_append (canvas_items, canvas_item);
-      gtk_widget_queue_draw (widget);
-    }
-}
-
-/************************************/
-/* ====== Interactive Canvas ====== */
-/************************************/
-
-static gboolean
-interactive_canvas_drag_motion (GtkWidget      *widget,
-                                GdkDragContext *context,
-                                gint            x,
-                                gint            y,
-                                guint           time,
-                                gpointer        data)
-{
-  if (drop_item)
-    {
-      /* already have a drop indicator - just update position */
-
-      drop_item->x = x;
-      drop_item->y = y;
-
-      gtk_widget_queue_draw (widget);
-      gdk_drag_status (context, GDK_ACTION_COPY, time);
-    }
-  else
-    {
-      /* request DnD data for creating a drop indicator */
-
-      GdkAtom target = gtk_drag_dest_find_target (widget, context, NULL);
-
-      if (!target)
-        return FALSE;
-
-      drag_data_requested_for_drop = FALSE;
-      gtk_drag_get_data (widget, context, target, time);
-    }
-
-  return TRUE;
-}
-
-static void
-interactive_canvas_drag_data_received (GtkWidget        *widget,
-                                       GdkDragContext   *context,
-                                       gint              x,
-                                       gint              y,
-                                       GtkSelectionData *selection,
-                                       guint             time,
-                                       gpointer          data)
-
-{
-  /* find the tool button which is the source of this DnD operation */
-
-  GtkWidget *palette = gtk_drag_get_source_widget (context);
-  GtkWidget *tool_item = NULL;
-  CanvasItem *item;
-
-  while (palette && !GTK_IS_TOOL_PALETTE (palette))
-    palette = gtk_widget_get_parent (palette);
-
-  if (palette)
-    tool_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (palette),
-                                                selection);
-
-  /* create a canvas item when a tool button was found */
-
-  g_assert (NULL == drop_item);
-
-  if (!GTK_IS_TOOL_ITEM (tool_item))
-    return;
-
-  if (drop_item)
-    {
-      canvas_item_free (drop_item);
-      drop_item = NULL;
-    }
-
-  item = canvas_item_new (widget, GTK_TOOL_BUTTON (tool_item), x, y);
-
-  /* Either create a new item or just create a preview item, 
-     depending on why the drag data was requested. */
-  if(drag_data_requested_for_drop)
-    {
-      canvas_items = g_list_append (canvas_items, item);
-      drop_item = NULL;
-
-      gtk_drag_finish (context, TRUE, time);
-    } else
-    {
-      drop_item = item;
-      gdk_drag_status (context, GDK_ACTION_COPY, time);
-    }
-
-  gtk_widget_queue_draw (widget);
-}
-
-static gboolean
-interactive_canvas_drag_drop (GtkWidget      *widget,
-                              GdkDragContext *context,
-                              gint            x,
-                              gint            y,
-                              guint           time,
-                              gpointer        data)
-{
-  GdkAtom target = gtk_drag_dest_find_target (widget, context, NULL);
-
-  if (!target)
-    return FALSE;
-
-  drag_data_requested_for_drop = TRUE;
-  gtk_drag_get_data (widget, context, target, time);
-
-  return FALSE;
-}
-
-static void
-interactive_canvas_drag_leave (gpointer data)
-{
-  if (drop_item)
-    {
-      GtkWidget *widget = GTK_WIDGET (data);
-
-      canvas_item_free (drop_item);
-      drop_item = NULL;
-
-      if (widget)
-        gtk_widget_queue_draw (widget);
-    }
-}
-
-static void
-on_combo_orientation_changed (GtkComboBox *combo_box,
-                              gpointer     user_data)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (user_data);
-  GtkScrolledWindow *sw;
-  GtkTreeModel *model = gtk_combo_box_get_model (combo_box);
-  GtkTreeIter iter;
-  gint val = 0;
-
-  sw = GTK_SCROLLED_WINDOW (gtk_widget_get_parent (GTK_WIDGET (palette)));
-
-  if (!gtk_combo_box_get_active_iter (combo_box, &iter))
-    return;
-
-  gtk_tree_model_get (model, &iter, 1, &val, -1);
-
-  gtk_orientable_set_orientation (GTK_ORIENTABLE (palette), val);
-
-  if (val == GTK_ORIENTATION_HORIZONTAL)
-    gtk_scrolled_window_set_policy (sw, GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
-  else
-    gtk_scrolled_window_set_policy (sw, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-}
-
-static void
-on_combo_style_changed (GtkComboBox *combo_box,
-                        gpointer     user_data)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (user_data);
-  GtkTreeModel *model = gtk_combo_box_get_model (combo_box);
-  GtkTreeIter iter;
-  gint val = 0;
-
-  if (!gtk_combo_box_get_active_iter (combo_box, &iter))
-    return;
-
-  gtk_tree_model_get (model, &iter, 1, &val, -1);
-
-  if (val == -1)
-    gtk_tool_palette_unset_style (palette);
-  else
-    gtk_tool_palette_set_style (palette, val);
-}
-
-GtkWidget *
-do_toolpalette (GtkWidget *do_widget)
-{
-  GtkWidget *box = NULL;
-  GtkWidget *hbox = NULL;
-  GtkWidget *combo_orientation = NULL;
-  GtkListStore *orientation_model = NULL;
-  GtkWidget *combo_style = NULL;
-  GtkListStore *style_model = NULL;
-  GtkCellRenderer *cell_renderer = NULL;
-  GtkTreeIter iter;
-  GtkWidget *palette = NULL;
-  GtkWidget *palette_scroller = NULL;
-  GtkWidget *notebook = NULL;
-  GtkWidget *contents = NULL;
-  GtkWidget *contents_scroller = NULL;
-
-  if (!window)
-    {
-      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-      gtk_window_set_display (GTK_WINDOW (window),
-                              gtk_widget_get_display (do_widget));
-      gtk_window_set_title (GTK_WINDOW (window), "Tool Palette");
-      gtk_window_set_default_size (GTK_WINDOW (window), 200, 600);
-
-      g_signal_connect (window, "destroy",
-                        G_CALLBACK (gtk_widget_destroyed), &window);
-
-      /* Add widgets to control the ToolPalette appearance: */
-      box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
-      g_object_set (box, "margin", 6, NULL);
-      gtk_container_add (GTK_CONTAINER (window), box);
-
-      /* Orientation combo box: */
-      orientation_model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
-      gtk_list_store_append (orientation_model, &iter);
-      gtk_list_store_set (orientation_model, &iter,
-                          0, "Horizontal",
-                          1, GTK_ORIENTATION_HORIZONTAL,
-                          -1);
-      gtk_list_store_append (orientation_model, &iter);
-      gtk_list_store_set (orientation_model, &iter,
-                          0, "Vertical",
-                          1, GTK_ORIENTATION_VERTICAL,
-                          -1);
-
-      combo_orientation =
-        gtk_combo_box_new_with_model (GTK_TREE_MODEL (orientation_model));
-      cell_renderer = gtk_cell_renderer_text_new ();
-      gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_orientation),
-                                  cell_renderer,
-                                  TRUE);
-      gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_orientation),
-                                      cell_renderer,
-                                      "text", 0,
-                                      NULL);
-      gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_orientation), &iter);
-      gtk_box_pack_start (GTK_BOX (box), combo_orientation);
-
-      /* Style combo box: */
-      style_model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
-      gtk_list_store_append (style_model, &iter);
-      gtk_list_store_set (style_model, &iter,
-                          0, "Text",
-                          1, GTK_TOOLBAR_TEXT,
-                          -1);
-      gtk_list_store_append (style_model, &iter);
-      gtk_list_store_set (style_model, &iter,
-                          0, "Both",
-                          1, GTK_TOOLBAR_BOTH,
-                          -1);
-      gtk_list_store_append (style_model, &iter);
-      gtk_list_store_set (style_model, &iter,
-                          0, "Both: Horizontal",
-                          1, GTK_TOOLBAR_BOTH_HORIZ,
-                          -1);
-      gtk_list_store_append (style_model, &iter);
-      gtk_list_store_set (style_model, &iter,
-                          0, "Icons",
-                          1, GTK_TOOLBAR_ICONS,
-                          -1);
-      gtk_list_store_append (style_model, &iter);
-      gtk_list_store_set (style_model, &iter,
-                          0, "Default",
-                          1, -1,  /* A custom meaning for this demo. */
-                          -1);
-      combo_style = gtk_combo_box_new_with_model (GTK_TREE_MODEL (style_model));
-      cell_renderer = gtk_cell_renderer_text_new ();
-      gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_style),
-                                  cell_renderer,
-                                  TRUE);
-      gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_style),
-                                      cell_renderer,
-                                      "text", 0,
-                                      NULL);
-      gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_style), &iter);
-      gtk_box_pack_start (GTK_BOX (box), combo_style);
-
-      /* Add hbox */
-      hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
-      gtk_box_pack_start (GTK_BOX (box), hbox);
-
-      /* Add and fill the ToolPalette: */
-      palette = gtk_tool_palette_new ();
-
-      load_icon_items (GTK_TOOL_PALETTE (palette));
-      load_toggle_items (GTK_TOOL_PALETTE (palette));
-      load_special_items (GTK_TOOL_PALETTE (palette));
-
-      palette_scroller = gtk_scrolled_window_new (NULL, NULL);
-      gtk_widget_set_vexpand (palette_scroller, TRUE);
-      gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (palette_scroller),
-                                      GTK_POLICY_NEVER,
-                                      GTK_POLICY_AUTOMATIC);
-      g_object_set (palette_scroller, "margin", 6, NULL);
-      gtk_widget_set_hexpand (palette_scroller, TRUE);
-
-      gtk_container_add (GTK_CONTAINER (palette_scroller), palette);
-      gtk_container_add (GTK_CONTAINER (hbox), palette_scroller);
-
-      /* Connect signals: */
-      g_signal_connect (combo_orientation, "changed",
-                        G_CALLBACK (on_combo_orientation_changed), palette);
-      g_signal_connect (combo_style, "changed",
-                        G_CALLBACK (on_combo_style_changed), palette);
-
-      /* Keep the widgets in sync: */
-      on_combo_orientation_changed (GTK_COMBO_BOX (combo_orientation), palette);
-
-      /* ===== notebook ===== */
-
-      notebook = gtk_notebook_new ();
-      g_object_set (notebook, "margin", 6, NULL);
-      gtk_box_pack_end (GTK_BOX(hbox), notebook);
-
-      /* ===== DnD for tool items ===== */
-
-      g_signal_connect (palette, "drag-data-received",
-                        G_CALLBACK (palette_drag_data_received), NULL);
-
-      gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette),
-                                      palette,
-                                      GTK_DEST_DEFAULT_ALL,
-                                      GTK_TOOL_PALETTE_DRAG_ITEMS |
-                                      GTK_TOOL_PALETTE_DRAG_GROUPS,
-                                      GDK_ACTION_MOVE);
-
-      /* ===== passive DnD dest ===== */
-
-      contents = gtk_drawing_area_new ();
-
-      g_object_connect (contents,
-                        "draw", canvas_draw, NULL,
-                        "drag-data-received", passive_canvas_drag_data_received, NULL,
-                        NULL);
-
-      gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette),
-                                      contents,
-                                      GTK_DEST_DEFAULT_ALL,
-                                      GTK_TOOL_PALETTE_DRAG_ITEMS,
-                                      GDK_ACTION_COPY);
-
-      contents_scroller = gtk_scrolled_window_new (NULL, NULL);
-      gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (contents_scroller),
-                                      GTK_POLICY_AUTOMATIC,
-                                      GTK_POLICY_ALWAYS);
-      gtk_container_add (GTK_CONTAINER (contents_scroller), contents);
-
-      gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
-                                contents_scroller,
-                                gtk_label_new ("Passive DnD Mode"));
-      g_object_set (contents_scroller, "margin", 6, NULL);
-
-      /* ===== interactive DnD dest ===== */
-
-      contents = gtk_drawing_area_new ();
-
-      g_object_connect (contents,
-                        "draw", canvas_draw, NULL,
-                        "drag-motion", interactive_canvas_drag_motion, NULL,
-                        "drag-data-received", interactive_canvas_drag_data_received, NULL,
-                        "drag-leave", interactive_canvas_drag_leave, contents,
-                        "drag-drop", interactive_canvas_drag_drop, NULL,
-                        NULL);
-
-      gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette),
-                                      contents,
-                                      GTK_DEST_DEFAULT_HIGHLIGHT,
-                                      GTK_TOOL_PALETTE_DRAG_ITEMS,
-                                      GDK_ACTION_COPY);
-
-      contents_scroller = gtk_scrolled_window_new (NULL, NULL);
-      gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (contents_scroller),
-                                      GTK_POLICY_AUTOMATIC,
-                                      GTK_POLICY_ALWAYS);
-      gtk_container_add (GTK_CONTAINER (contents_scroller), contents);
-
-      gtk_notebook_append_page (GTK_NOTEBOOK (notebook), contents_scroller,
-                                gtk_label_new ("Interactive DnD Mode"));
-    }
-
-  if (!gtk_widget_get_visible (window))
-    {
-      gtk_widget_show (window);
-    }
-  else
-    {
-      gtk_widget_destroy (window);
-      window = NULL;
-    }
-
-  return window;
-}
-
-
-static void
-load_icon_items (GtkToolPalette *palette)
-{
-  GList *contexts;
-  GList *l;
-  GtkIconTheme *icon_theme;
-
-  icon_theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (GTK_WIDGET (palette)));
-
-  contexts = gtk_icon_theme_list_contexts (icon_theme);
-  for (l = contexts; l; l = l->next)
-    {
-      gchar *context = l->data;
-      GList *icon_names;
-      GList *ll;
-      const guint max_icons = 10;
-      guint icons_count = 0;
-
-      GtkWidget *group = gtk_tool_item_group_new (context);
-      gtk_container_add (GTK_CONTAINER (palette), group);
-
-      if (g_strcmp0 (context, "Animations") == 0)
-        continue;
-
-      g_message ("Got context '%s'", context);
-      icon_names = gtk_icon_theme_list_icons (icon_theme, context);
-      icon_names = g_list_sort (icon_names, (GCompareFunc) strcmp);
-
-      for (ll = icon_names; ll; ll = ll->next)
-        {
-          GtkToolItem *item;
-          gchar *id = ll->data;
-
-          if (g_str_equal (id, "emblem-desktop"))
-            continue;
-
-          if (g_str_has_suffix (id, "-symbolic"))
-            continue;
-
-          g_message ("Got id '%s'", id);
-
-          item = gtk_tool_button_new (NULL, NULL);
-          gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), id);
-          gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (item), id);
-          gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-
-          /* Prevent us having an insane number of icons: */
-          ++icons_count;
-          if(icons_count >= max_icons)
-            break;
-        }
-
-      g_list_free_full (icon_names, g_free);
-    }
-
-  g_list_free_full (contexts, g_free);
-}
-
-static void
-load_toggle_items (GtkToolPalette *palette)
-{
-  GSList *toggle_group = NULL;
-  GtkToolItem *item;
-  GtkWidget *group;
-  char *label;
-  int i;
-
-  group = gtk_tool_item_group_new ("Radio Item");
-  gtk_container_add (GTK_CONTAINER (palette), group);
-
-  for (i = 1; i <= 10; ++i)
-    {
-      label = g_strdup_printf ("#%d", i);
-      item = gtk_radio_tool_button_new (toggle_group);
-      gtk_tool_button_set_label (GTK_TOOL_BUTTON (item), label);
-      g_free (label);
-
-      gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-      toggle_group = gtk_radio_tool_button_get_group (GTK_RADIO_TOOL_BUTTON (item));
-    }
-}
-
-static GtkToolItem *
-create_entry_item (const char *text)
-{
-  GtkToolItem *item;
-  GtkWidget *entry;
-
-  entry = gtk_entry_new ();
-  gtk_entry_set_text (GTK_ENTRY (entry), text);
-  gtk_entry_set_width_chars (GTK_ENTRY (entry), 5);
-
-  item = gtk_tool_item_new ();
-  gtk_container_add (GTK_CONTAINER (item), entry);
-
-  return item;
-}
-
-static void
-load_special_items (GtkToolPalette *palette)
-{
-  GtkToolItem *item;
-  GtkWidget *group;
-  GtkWidget *label_button;
-
-  group = gtk_tool_item_group_new (NULL);
-  label_button = gtk_button_new_with_label ("Advanced Features");
-  gtk_widget_show (label_button);
-  gtk_tool_item_group_set_label_widget (GTK_TOOL_ITEM_GROUP (group),
-                                        label_button);
-  gtk_container_add (GTK_CONTAINER (palette), group);
-
-  item = create_entry_item ("homogeneous=FALSE");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  gtk_container_child_set (GTK_CONTAINER (group), GTK_WIDGET (item),
-                           "homogeneous", FALSE, NULL);
-
-  item = create_entry_item ("homogeneous=FALSE, expand=TRUE");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  gtk_container_child_set (GTK_CONTAINER (group), GTK_WIDGET (item),
-                           "homogeneous", FALSE, "expand", TRUE,
-                           NULL);
-
-  item = create_entry_item ("homogeneous=FALSE, expand=TRUE, fill=FALSE");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  gtk_container_child_set (GTK_CONTAINER (group), GTK_WIDGET (item),
-                           "homogeneous", FALSE, "expand", TRUE,
-                           "fill", FALSE, NULL);
-
-  item = create_entry_item ("homogeneous=FALSE, expand=TRUE, new-row=TRUE");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  gtk_container_child_set (GTK_CONTAINER (group), GTK_WIDGET (item),
-                           "homogeneous", FALSE, "expand", TRUE,
-                           "new-row", TRUE, NULL);
-
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "go-up");
-  gtk_tool_item_set_tooltip_text (item, "Show on vertical palettes only");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  gtk_tool_item_set_visible_horizontal (item, FALSE);
-
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "go-next");
-  gtk_tool_item_set_tooltip_text (item, "Show on horizontal palettes only");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  gtk_tool_item_set_visible_vertical (item, FALSE);
-
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "edit-delete");
-  gtk_tool_item_set_tooltip_text (item, "Do not show at all");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  gtk_widget_hide (GTK_WIDGET (item));
-
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "view-fullscreen");
-  gtk_tool_item_set_tooltip_text (item, "Expanded this item");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  gtk_container_child_set (GTK_CONTAINER (group), GTK_WIDGET (item),
-                           "homogeneous", FALSE,
-                           "expand", TRUE,
-                           NULL);
-
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "help-browser");
-  gtk_tool_item_set_tooltip_text (item, "A regular item");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-}
index fa4417a041098e7060d835bd2d8442c24352e87c..29914f7eade9cfeea72337945389709de24c9f08 100644 (file)
       <xi:include href="xml/gtktoolshell.xml" />
       <xi:include href="xml/gtktoolbar.xml" />
       <xi:include href="xml/gtktoolitem.xml" />
-      <xi:include href="xml/gtktoolpalette.xml" />
-      <xi:include href="xml/gtktoolitemgroup.xml" />
       <xi:include href="xml/gtkseparatortoolitem.xml" />
       <xi:include href="xml/gtktoolbutton.xml" />
       <xi:include href="xml/gtkmenutoolbutton.xml" />
index fd0c3229e9f69d9a2e9d2e40d20ff12074d6d7ec..f519d322a374fc78d1d51808e219dc7815f3fd6a 100644 (file)
@@ -3227,78 +3227,6 @@ gtk_toggle_tool_button_get_type
 GtkToggleToolButtonPrivate
 </SECTION>
 
-<SECTION>
-<FILE>gtktoolitemgroup</FILE>
-<TITLE>GtkToolItemGroup</TITLE>
-GtkToolItemGroup
-GtkToolItemGroupClass
-gtk_tool_item_group_get_collapsed
-gtk_tool_item_group_get_drop_item
-gtk_tool_item_group_get_ellipsize
-gtk_tool_item_group_get_item_position
-gtk_tool_item_group_get_n_items
-gtk_tool_item_group_get_label
-gtk_tool_item_group_get_label_widget
-gtk_tool_item_group_get_nth_item
-gtk_tool_item_group_get_header_relief
-gtk_tool_item_group_insert
-gtk_tool_item_group_new
-gtk_tool_item_group_set_collapsed
-gtk_tool_item_group_set_ellipsize
-gtk_tool_item_group_set_item_position
-gtk_tool_item_group_set_label
-gtk_tool_item_group_set_label_widget
-gtk_tool_item_group_set_header_relief
-
-<SUBSECTION Standard>
-GTK_TOOL_ITEM_GROUP
-GTK_IS_TOOL_ITEM_GROUP
-GTK_TYPE_TOOL_ITEM_GROUP
-GTK_TOOL_ITEM_GROUP_CLASS
-GTK_IS_TOOL_ITEM_GROUP_CLASS
-GTK_TOOL_ITEM_GROUP_GET_CLASS
-
-<SUBSECTION Private>
-GtkToolItemGroupPrivate
-gtk_tool_item_group_get_type
-</SECTION>
-
-<SECTION>
-<FILE>gtktoolpalette</FILE>
-<TITLE>GtkToolPalette</TITLE>
-GtkToolPalette
-GtkToolPaletteClass
-gtk_tool_palette_new
-gtk_tool_palette_get_exclusive
-gtk_tool_palette_set_exclusive
-gtk_tool_palette_get_expand
-gtk_tool_palette_set_expand
-gtk_tool_palette_get_group_position
-gtk_tool_palette_set_group_position
-gtk_tool_palette_get_style
-gtk_tool_palette_set_style
-gtk_tool_palette_unset_style
-gtk_tool_palette_add_drag_dest
-gtk_tool_palette_get_drag_item
-gtk_tool_palette_get_drag_target_group
-gtk_tool_palette_get_drag_target_item
-gtk_tool_palette_get_drop_group
-gtk_tool_palette_get_drop_item
-GtkToolPaletteDragTargets
-gtk_tool_palette_set_drag_source
-
-<SUBSECTION Standard>
-GTK_TOOL_PALETTE
-GTK_IS_TOOL_PALETTE
-GTK_TYPE_TOOL_PALETTE
-GTK_TOOL_PALETTE_CLASS
-GTK_IS_TOOL_PALETTE_CLASS
-GTK_TOOL_PALETTE_GET_CLASS
-<SUBSECTION Private>
-gtk_tool_palette_get_type
-GtkToolPalettePrivate
-</SECTION>
-
 <SECTION>
 <FILE>gtktooltip</FILE>
 <TITLE>GtkTooltip</TITLE>
index f94454fb2c1f5210f324c9d858e0b17508b00603..dbcd77ea3e614185e2eaac1150c91a4ef13caab8 100644 (file)
@@ -132,7 +132,6 @@ images = [
   'images/switch.png',
   'images/toggle-button.png',
   'images/toolbar.png',
-  'images/toolpalette.png',
   'images/tree-view-coordinates.png',
   'images/up-center.png',
   'images/up-end.png',
index 2eadeae47ce0d37593a09a12e7ddceb773674126..b75e192c54cd0160cfe8b54a8ab2039ce321180f 100644 (file)
     <link linkend="GtkToolbar">
       <inlinegraphic fileref="toolbar.png" format="PNG"></inlinegraphic>
     </link>
-    <link linkend="GtkToolPalette">
-      <inlinegraphic fileref="toolpalette.png" format="PNG"></inlinegraphic>
-    </link>
     <link linkend="GtkPlacesSidebar">
       <inlinegraphic fileref="placessidebar.png" format="PNG"></inlinegraphic>
     </link>
index 6feaf98759ac3c5c9a3fe218e0b25ee35a23b83f..d74f5fb83bb05fe4efd14e3454ce7bb78b4dc11a 100644 (file)
@@ -800,40 +800,6 @@ create_toolbar (void)
   return new_widget_info ("toolbar", widget, SMALL);
 }
 
-static WidgetInfo *
-create_toolpalette (void)
-{
-  GtkWidget *widget, *group;
-  GtkToolItem *item;
-
-  widget = gtk_tool_palette_new ();
-  group = gtk_tool_item_group_new ("Tools");
-  gtk_container_add (GTK_CONTAINER (widget), group);
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "help-about");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "document-new");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "folder");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-
-  group = gtk_tool_item_group_new ("More tools");
-  gtk_container_add (GTK_CONTAINER (widget), group);
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "edit-cut");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "edit-find");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-  item = gtk_tool_button_new (NULL, NULL);
-  gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "document-properties");
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
-
-  return new_widget_info ("toolpalette", widget, MEDIUM);
-}
-
 static WidgetInfo *
 create_menubar (void)
 {
@@ -1455,7 +1421,6 @@ get_all_widgets (void)
   retval = g_list_prepend (retval, create_headerbar ());
   retval = g_list_prepend (retval, create_stack ());
   retval = g_list_prepend (retval, create_stack_switcher ());
-  retval = g_list_prepend (retval, create_toolpalette ());
   retval = g_list_prepend (retval, create_spinner ());
   retval = g_list_prepend (retval, create_about_dialog ());
   retval = g_list_prepend (retval, create_accel_label ());
index a4bd93691e572236478cd3816baf6878fdff65fd..1bd86643deafb5377783aa362692055363be301a 100644 (file)
@@ -163,8 +163,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkToggleButton, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkToggleToolButton, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkToolButton, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkToolItem, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkToolItemGroup, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkToolPalette, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkToolShell, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkToolbar, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkTooltip, g_object_unref)
index 1d23fc10fa13abc8b0b06fbeebf24045c7df190f..3143f3f7f21beebe9200e0bd1303a4451de536e4 100644 (file)
--- a/gtk/gtk.h
+++ b/gtk/gtk.h
 #include <gtk/gtktoolbar.h>
 #include <gtk/gtktoolbutton.h>
 #include <gtk/gtktoolitem.h>
-#include <gtk/gtktoolitemgroup.h>
-#include <gtk/gtktoolpalette.h>
 #include <gtk/gtktoolshell.h>
 #include <gtk/gtktooltip.h>
 #include <gtk/gtktestutils.h>
diff --git a/gtk/gtktoolitemgroup.c b/gtk/gtktoolitemgroup.c
deleted file mode 100644 (file)
index f2c9c51..0000000
+++ /dev/null
@@ -1,2333 +0,0 @@
-/* GtkToolPalette -- A tool palette with categories and DnD support
- * Copyright (C) 2008  Openismus GmbH
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *      Mathias Hasselmann
- *      Jan Arne Petersen
- */
-
-#include "config.h"
-
-#include <math.h>
-#include <string.h>
-
-#include "gtktoolpaletteprivate.h"
-#include "gtktypebuiltins.h"
-#include "gtkprivate.h"
-#include "gtkintl.h"
-#include "gtkcssnodeprivate.h"
-#include "gtkstylecontextprivate.h"
-#include "gtkwidgetprivate.h"
-
-
-#define ANIMATION_TIMEOUT        50
-#define ANIMATION_DURATION      (ANIMATION_TIMEOUT * 4)
-#define DEFAULT_ANIMATION_STATE  TRUE
-#define DEFAULT_EXPANDER_SIZE    16
-#define DEFAULT_HEADER_SPACING   2
-
-#define DEFAULT_LABEL            ""
-#define DEFAULT_COLLAPSED        FALSE
-#define DEFAULT_ELLIPSIZE        PANGO_ELLIPSIZE_NONE
-
-/**
- * SECTION:gtktoolitemgroup
- * @Short_description: A sub container used in a tool palette
- * @Title: GtkToolItemGroup
- *
- * A #GtkToolItemGroup is used together with #GtkToolPalette to add
- * #GtkToolItems to a palette like container with different
- * categories and drag and drop support.
- *
- * # CSS nodes
- *
- * GtkToolItemGroup has a single CSS node named toolitemgroup.
- *
- * Since: 2.20
- */
-
-enum
-{
-  PROP_NONE,
-  PROP_LABEL,
-  PROP_LABEL_WIDGET,
-  PROP_COLLAPSED,
-  PROP_ELLIPSIZE,
-  PROP_RELIEF
-};
-
-enum
-{
-  CHILD_PROP_NONE,
-  CHILD_PROP_HOMOGENEOUS,
-  CHILD_PROP_EXPAND,
-  CHILD_PROP_FILL,
-  CHILD_PROP_NEW_ROW,
-  CHILD_PROP_POSITION,
-};
-
-typedef struct _GtkToolItemGroupChild GtkToolItemGroupChild;
-
-struct _GtkToolItemGroupPrivate
-{
-  GtkWidget         *header;
-  GtkWidget         *label_widget;
-
-  GtkCssNode        *arrow_node;
-
-  GList             *children;
-
-  gint64             animation_start;
-  GSource           *animation_timeout;
-
-  gulong             focus_set_id;
-  GtkWidget         *toplevel;
-
-  GtkSettings       *settings;
-  gulong             settings_connection;
-
-  PangoEllipsizeMode ellipsize;
-
-  guint              animation : 1;
-  guint              collapsed : 1;
-};
-
-struct _GtkToolItemGroupChild
-{
-  GtkToolItem *item;
-
-  guint        homogeneous : 1;
-  guint        expand : 1;
-  guint        fill : 1;
-  guint        new_row : 1;
-};
-
-static void gtk_tool_item_group_tool_shell_init (GtkToolShellIface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (GtkToolItemGroup, gtk_tool_item_group, GTK_TYPE_CONTAINER,
-                         G_ADD_PRIVATE (GtkToolItemGroup)
-                         G_IMPLEMENT_INTERFACE (GTK_TYPE_TOOL_SHELL,
-                                                gtk_tool_item_group_tool_shell_init));
-
-static GtkWidget*
-gtk_tool_item_group_get_frame (GtkToolItemGroup *group)
-{
-  return gtk_bin_get_child (GTK_BIN (group->priv->header));
-}
-
-static GtkOrientation
-gtk_tool_item_group_get_orientation (GtkToolShell *shell)
-{
-  GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (shell));
-
-  if (GTK_IS_TOOL_PALETTE (parent))
-    return gtk_orientable_get_orientation (GTK_ORIENTABLE (parent));
-
-  return GTK_ORIENTATION_VERTICAL;
-}
-
-static GtkToolbarStyle
-gtk_tool_item_group_get_style (GtkToolShell *shell)
-{
-  GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (shell));
-
-  if (GTK_IS_TOOL_PALETTE (parent))
-    return gtk_tool_palette_get_style (GTK_TOOL_PALETTE (parent));
-
-  return GTK_TOOLBAR_ICONS;
-}
-
-static PangoEllipsizeMode
-gtk_tool_item_group_get_ellipsize_mode (GtkToolShell *shell)
-{
-  return GTK_TOOL_ITEM_GROUP (shell)->priv->ellipsize;
-}
-
-static gfloat
-gtk_tool_item_group_get_text_alignment (GtkToolShell *shell)
-{
-  if (GTK_TOOLBAR_TEXT == gtk_tool_item_group_get_style (shell) ||
-      GTK_TOOLBAR_BOTH_HORIZ == gtk_tool_item_group_get_style (shell))
-    return 0.0;
-
-  return 0.5;
-}
-
-static GtkOrientation
-gtk_tool_item_group_get_text_orientation (GtkToolShell *shell)
-{
-  return GTK_ORIENTATION_HORIZONTAL;
-}
-
-static GtkSizeGroup *
-gtk_tool_item_group_get_text_size_group (GtkToolShell *shell)
-{
-  GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (shell));
-
-  if (GTK_IS_TOOL_PALETTE (parent))
-    return _gtk_tool_palette_get_size_group (GTK_TOOL_PALETTE (parent));
-
-  return NULL;
-}
-
-static void
-animation_change_notify (GtkToolItemGroup *group)
-{
-  GtkSettings *settings = group->priv->settings;
-  gboolean animation;
-
-  if (settings)
-    g_object_get (settings,
-                  "gtk-enable-animations", &animation,
-                  NULL);
-  else
-    animation = DEFAULT_ANIMATION_STATE;
-
-  group->priv->animation = animation;
-}
-
-static void
-gtk_tool_item_group_settings_change_notify (GtkSettings      *settings,
-                                            const GParamSpec *pspec,
-                                            GtkToolItemGroup *group)
-{
-  if (strcmp (pspec->name, "gtk-enable-animations") == 0)
-    animation_change_notify (group);
-}
-
-static void
-gtk_tool_item_group_display_changed (GtkWidget  *widget,
-                                     GdkDisplay *previous_display)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (widget);
-  GtkToolItemGroupPrivate* priv = group->priv;
-  GtkSettings *old_settings = priv->settings;
-  GtkSettings *settings;
-
-  settings = gtk_widget_get_settings (GTK_WIDGET (group));
-
-  if (settings == old_settings)
-    return;
-
-  if (old_settings)
-  {
-    g_signal_handler_disconnect (old_settings, priv->settings_connection);
-    priv->settings_connection = 0;
-    g_object_unref (old_settings);
-  }
-
-  if (settings)
-  {
-    priv->settings_connection =
-      g_signal_connect (settings, "notify",
-                        G_CALLBACK (gtk_tool_item_group_settings_change_notify),
-                        group);
-    priv->settings = g_object_ref (settings);
-  }
-  else
-    priv->settings = NULL;
-
-  animation_change_notify (group);
-}
-
-static void
-gtk_tool_item_group_tool_shell_init (GtkToolShellIface *iface)
-{
-  iface->get_orientation = gtk_tool_item_group_get_orientation;
-  iface->get_style = gtk_tool_item_group_get_style;
-  iface->get_text_alignment = gtk_tool_item_group_get_text_alignment;
-  iface->get_text_orientation = gtk_tool_item_group_get_text_orientation;
-  iface->get_text_size_group = gtk_tool_item_group_get_text_size_group;
-  iface->get_ellipsize_mode = gtk_tool_item_group_get_ellipsize_mode;
-}
-
-static gboolean
-gtk_tool_item_group_header_draw_cb (GtkWidget *widget,
-                                    cairo_t   *cr,
-                                    gpointer   data)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (data);
-  GtkToolItemGroupPrivate* priv = group->priv;
-  GtkOrientation orientation;
-  gint x, y, width, height;
-  GtkTextDirection direction;
-  GtkStyleContext *context;
-
-  orientation = gtk_tool_shell_get_orientation (GTK_TOOL_SHELL (group));
-  direction = gtk_widget_get_direction (widget);
-  width = gtk_widget_get_allocated_width (widget);
-  height = gtk_widget_get_allocated_height (widget);
-  context = gtk_widget_get_style_context (widget);
-
-  gtk_style_context_save_to_node (context, priv->arrow_node);
-
-  if (GTK_ORIENTATION_VERTICAL == orientation)
-    {
-      gtk_style_context_add_class (context, GTK_STYLE_CLASS_VERTICAL);
-
-      if (GTK_TEXT_DIR_RTL == direction)
-        x = width;
-      else
-        x = 0;
-
-      y = height / 2 - (DEFAULT_EXPANDER_SIZE / 2);
-    }
-  else
-    {
-      gtk_style_context_add_class (context, GTK_STYLE_CLASS_HORIZONTAL);
-      x = width / 2 - (DEFAULT_EXPANDER_SIZE / 2);
-      y = 0;
-    }
-
-  gtk_render_expander (context, cr, x, y,
-                       DEFAULT_EXPANDER_SIZE,
-                       DEFAULT_EXPANDER_SIZE);
-
-  gtk_style_context_restore (context);
-
-  return FALSE;
-}
-
-static void
-gtk_tool_item_group_header_clicked_cb (GtkButton *button,
-                                       gpointer   data)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (data);
-  GtkToolItemGroupPrivate* priv = group->priv;
-  GtkWidget *parent = gtk_widget_get_parent (data);
-
-  if (priv->collapsed ||
-      !GTK_IS_TOOL_PALETTE (parent) ||
-      !gtk_tool_palette_get_exclusive (GTK_TOOL_PALETTE (parent), data))
-    gtk_tool_item_group_set_collapsed (group, !priv->collapsed);
-}
-
-static void
-gtk_tool_item_group_header_adjust_style (GtkToolItemGroup *group)
-{
-  GtkWidget *frame = gtk_bin_get_child (GTK_BIN (group->priv->header));
-  GtkWidget *label_widget = gtk_bin_get_child (GTK_BIN (frame));
-  GtkToolItemGroupPrivate* priv = group->priv;
-  gint dx = 0, dy = 0;
-
-  switch (gtk_tool_shell_get_orientation (GTK_TOOL_SHELL (group)))
-    {
-      case GTK_ORIENTATION_HORIZONTAL:
-        dy = DEFAULT_HEADER_SPACING + DEFAULT_EXPANDER_SIZE;
-
-        if (GTK_IS_LABEL (label_widget))
-          {
-            gtk_label_set_ellipsize (GTK_LABEL (label_widget), PANGO_ELLIPSIZE_NONE);
-          }
-       break;
-
-      case GTK_ORIENTATION_VERTICAL:
-        dx = DEFAULT_HEADER_SPACING + DEFAULT_EXPANDER_SIZE;
-
-        if (GTK_IS_LABEL (label_widget))
-          {
-            gtk_label_set_ellipsize (GTK_LABEL (label_widget), priv->ellipsize);
-          }
-        break;
-
-      default:
-        g_assert_not_reached ();
-        break;
-    }
-
-  gtk_widget_set_margin_start (frame, dx);
-  gtk_widget_set_margin_top (frame, dy);
-}
-
-static void
-update_arrow_state (GtkToolItemGroup *group)
-{
-  GtkToolItemGroupPrivate *priv = group->priv;
-  GtkStateFlags state;
-
-  state = gtk_widget_get_state_flags (GTK_WIDGET (group));
-
-  if (priv->collapsed)
-    state &= ~GTK_STATE_FLAG_CHECKED;
-  else
-    state |= GTK_STATE_FLAG_CHECKED;
-  gtk_css_node_set_state (priv->arrow_node, state);
-}
-
-static void
-gtk_tool_item_group_init (GtkToolItemGroup *group)
-{
-  GtkWidget *frame;
-  GtkToolItemGroupPrivate* priv;
-  GtkCssNode *widget_node;
-
-  gtk_widget_set_has_window (GTK_WIDGET (group), FALSE);
-
-  group->priv = priv = gtk_tool_item_group_get_instance_private (group);
-
-  priv->children = NULL;
-  priv->collapsed = DEFAULT_COLLAPSED;
-
-  priv->label_widget = gtk_label_new (NULL);
-  gtk_widget_set_halign (priv->label_widget, GTK_ALIGN_START);
-  gtk_widget_set_valign (priv->label_widget, GTK_ALIGN_CENTER);
-  frame = gtk_frame_new (NULL);
-  gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-  gtk_container_add (GTK_CONTAINER (frame), priv->label_widget);
-
-  priv->header = gtk_button_new ();
-  g_object_ref_sink (priv->header);
-  gtk_widget_set_focus_on_click (priv->header, FALSE);
-  gtk_container_add (GTK_CONTAINER (priv->header), frame);
-  gtk_widget_set_parent (priv->header, GTK_WIDGET (group));
-
-  gtk_tool_item_group_header_adjust_style (group);
-
-  g_signal_connect_after (frame, "draw",
-                          G_CALLBACK (gtk_tool_item_group_header_draw_cb),
-                          group);
-
-  g_signal_connect (priv->header, "clicked",
-                    G_CALLBACK (gtk_tool_item_group_header_clicked_cb),
-                    group);
-
-  widget_node = gtk_widget_get_css_node (GTK_WIDGET (group));
-  priv->arrow_node = gtk_css_node_new ();
-  gtk_css_node_set_name (priv->arrow_node, I_("arrow"));
-  gtk_css_node_set_parent (priv->arrow_node, widget_node);
-  gtk_css_node_set_state (priv->arrow_node, gtk_css_node_get_state (widget_node));
-  g_object_unref (priv->arrow_node);
-
-  update_arrow_state (group);
-}
-
-static void
-gtk_tool_item_group_set_property (GObject      *object,
-                                  guint         prop_id,
-                                  const GValue *value,
-                                  GParamSpec   *pspec)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (object);
-
-  switch (prop_id)
-    {
-      case PROP_LABEL:
-        gtk_tool_item_group_set_label (group, g_value_get_string (value));
-        break;
-
-      case PROP_LABEL_WIDGET:
-        gtk_tool_item_group_set_label_widget (group, g_value_get_object (value));
-       break;
-
-      case PROP_COLLAPSED:
-        gtk_tool_item_group_set_collapsed (group, g_value_get_boolean (value));
-        break;
-
-      case PROP_ELLIPSIZE:
-        gtk_tool_item_group_set_ellipsize (group, g_value_get_enum (value));
-        break;
-
-      case PROP_RELIEF:
-        gtk_tool_item_group_set_header_relief (group, g_value_get_enum(value));
-        break;
-
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-gtk_tool_item_group_get_property (GObject    *object,
-                                  guint       prop_id,
-                                  GValue     *value,
-                                  GParamSpec *pspec)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (object);
-
-  switch (prop_id)
-    {
-      case PROP_LABEL:
-        g_value_set_string (value, gtk_tool_item_group_get_label (group));
-        break;
-
-      case PROP_LABEL_WIDGET:
-        g_value_set_object (value,
-                           gtk_tool_item_group_get_label_widget (group));
-        break;
-
-      case PROP_COLLAPSED:
-        g_value_set_boolean (value, gtk_tool_item_group_get_collapsed (group));
-        break;
-
-      case PROP_ELLIPSIZE:
-        g_value_set_enum (value, gtk_tool_item_group_get_ellipsize (group));
-        break;
-
-      case PROP_RELIEF:
-        g_value_set_enum (value, gtk_tool_item_group_get_header_relief (group));
-        break;
-
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-gtk_tool_item_group_finalize (GObject *object)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (object);
-
-  g_list_free (group->priv->children);
-
-  G_OBJECT_CLASS (gtk_tool_item_group_parent_class)->finalize (object);
-}
-
-static void
-gtk_tool_item_group_dispose (GObject *object)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (object);
-  GtkToolItemGroupPrivate* priv = group->priv;
-
-  if (priv->toplevel)
-    {
-      /* disconnect focus tracking handler */
-      g_signal_handler_disconnect (priv->toplevel,
-                                   priv->focus_set_id);
-
-      priv->focus_set_id = 0;
-      priv->toplevel = NULL;
-    }
-
-  if (priv->settings_connection > 0)
-    {
-      g_signal_handler_disconnect (priv->settings, priv->settings_connection);
-      priv->settings_connection = 0;
-    }
-
-  g_clear_object (&priv->settings);
-  if (priv->header)
-    gtk_widget_unparent (priv->header);
-  g_clear_object (&priv->header);
-
-  G_OBJECT_CLASS (gtk_tool_item_group_parent_class)->dispose (object);
-}
-
-static void
-gtk_tool_item_group_get_item_size (GtkToolItemGroup *group,
-                                   GtkRequisition   *item_size,
-                                   gboolean          homogeneous_only,
-                                   gint             *requested_rows)
-{
-  GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (group));
-
-  if (GTK_IS_TOOL_PALETTE (parent))
-    _gtk_tool_palette_get_item_size (GTK_TOOL_PALETTE (parent), item_size, homogeneous_only, requested_rows);
-  else
-    _gtk_tool_item_group_item_size_request (group, item_size, homogeneous_only, requested_rows);
-}
-
-static void
-gtk_tool_item_group_size_request (GtkWidget      *widget,
-                                  GtkRequisition *requisition)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (widget);
-  GtkToolItemGroupPrivate* priv = group->priv;
-  GtkOrientation orientation;
-  GtkRequisition item_size;
-  gint requested_rows;
-
-  if (priv->children && gtk_tool_item_group_get_label_widget (group))
-    {
-      gtk_widget_get_preferred_size (priv->header,
-                                     requisition, NULL);
-      gtk_widget_show (priv->header);
-    }
-  else
-    {
-      requisition->width = requisition->height = 0;
-      gtk_widget_hide (priv->header);
-    }
-
-  gtk_tool_item_group_get_item_size (group, &item_size, FALSE, &requested_rows);
-
-  orientation = gtk_tool_shell_get_orientation (GTK_TOOL_SHELL (group));
-
-  if (GTK_ORIENTATION_VERTICAL == orientation)
-    requisition->width = MAX (requisition->width, item_size.width);
-  else
-    requisition->height = MAX (requisition->height, item_size.height * requested_rows);
-}
-
-static void
-gtk_tool_item_group_measure (GtkWidget      *widget,
-                             GtkOrientation  orientation,
-                             int             for_size,
-                             int            *minimum,
-                             int            *natural,
-                             int            *minimum_baseline,
-                             int            *natural_baseline)
-{
-  GtkRequisition requisition;
-
-  gtk_tool_item_group_size_request (widget, &requisition);
-
-  if (orientation == GTK_ORIENTATION_HORIZONTAL)
-    *minimum = *natural = requisition.width;
-  else
-    *minimum = *natural = requisition.height;
-}
-
-static gboolean
-gtk_tool_item_group_is_item_visible (GtkToolItemGroup      *group,
-                                     GtkToolItemGroupChild *child)
-{
-  GtkToolbarStyle style;
-  GtkOrientation orientation;
-
-  orientation = gtk_tool_shell_get_orientation (GTK_TOOL_SHELL (group));
-  style = gtk_tool_shell_get_style (GTK_TOOL_SHELL (group));
-
-  /* horizontal tool palettes with text style support only homogeneous items */
-  if (!child->homogeneous &&
-      GTK_ORIENTATION_HORIZONTAL == orientation &&
-      GTK_TOOLBAR_TEXT == style)
-    return FALSE;
-
-  return
-    (gtk_widget_get_visible (GTK_WIDGET (child->item))) &&
-    (GTK_ORIENTATION_VERTICAL == orientation ?
-     gtk_tool_item_get_visible_vertical (child->item) :
-     gtk_tool_item_get_visible_horizontal (child->item));
-}
-
-static inline unsigned
-udiv (unsigned x,
-      unsigned y)
-{
-  return (x + y - 1) / y;
-}
-
-static void
-gtk_tool_item_group_real_size_query (GtkWidget      *widget,
-                                     GtkAllocation  *allocation,
-                                     GtkRequisition *inquery)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (widget);
-  GtkToolItemGroupPrivate* priv = group->priv;
-
-  GtkRequisition item_size;
-  GtkAllocation item_area;
-
-  GtkOrientation orientation;
-
-  gint min_rows;
-
-  orientation = gtk_tool_shell_get_orientation (GTK_TOOL_SHELL (group));
-
-  /* figure out the size of homogeneous items */
-  gtk_tool_item_group_get_item_size (group, &item_size, TRUE, &min_rows);
-
-  if (GTK_ORIENTATION_VERTICAL == orientation)
-    item_size.width = MIN (item_size.width, allocation->width);
-  else
-    item_size.height = MIN (item_size.height, allocation->height);
-
-  item_size.width  = MAX (item_size.width, 1);
-  item_size.height = MAX (item_size.height, 1);
-
-  item_area.width = 0;
-  item_area.height = 0;
-
-  /* figure out the required columns (n_columns) and rows (n_rows)
-   * to place all items
-   */
-  if (!priv->collapsed || !priv->animation || priv->animation_timeout)
-    {
-      guint n_columns;
-      gint n_rows;
-      GList *it;
-
-      if (GTK_ORIENTATION_VERTICAL == orientation)
-        {
-          gboolean new_row = FALSE;
-          gint row = -1;
-          guint col = 0;
-
-          item_area.width = allocation->width;
-          n_columns = MAX (item_area.width / item_size.width, 1);
-
-          /* calculate required rows for n_columns columns */
-          for (it = priv->children; it != NULL; it = it->next)
-            {
-              GtkToolItemGroupChild *child = it->data;
-
-              if (!gtk_tool_item_group_is_item_visible (group, child))
-                continue;
-
-              if (new_row || child->new_row)
-                {
-                  new_row = FALSE;
-                  row++;
-                  col = 0;
-                }
-
-              if (child->expand)
-                new_row = TRUE;
-
-              if (child->homogeneous)
-                {
-                  col++;
-                  if (col >= n_columns)
-                    new_row = TRUE;
-                }
-              else
-                {
-                  GtkRequisition req = {0, 0};
-                  guint width;
-
-                  gtk_widget_get_preferred_size (GTK_WIDGET (child->item),
-                                                 &req, NULL);
-
-                  width = udiv (req.width, item_size.width);
-                  col += width;
-
-                  if (col > n_columns)
-                    row++;
-
-                  col = width;
-
-                  if (col >= n_columns)
-                    new_row = TRUE;
-                }
-            }
-          n_rows = row + 2;
-        }
-      else
-        {
-          guint *row_min_width;
-          gint row = -1;
-          gboolean new_row = TRUE;
-          guint col = 0, min_col, max_col = 0, all_items = 0;
-          gint i;
-
-          item_area.height = allocation->height;
-          n_rows = MAX (item_area.height / item_size.height, min_rows);
-
-          row_min_width = g_new0 (guint, n_rows);
-
-          /* calculate minimal and maximal required cols and minimal
-           * required rows
-           */
-          for (it = priv->children; it != NULL; it = it->next)
-            {
-              GtkToolItemGroupChild *child = it->data;
-
-              if (!gtk_tool_item_group_is_item_visible (group, child))
-                continue;
-
-              if (new_row || child->new_row)
-                {
-                  new_row = FALSE;
-                  row++;
-                  col = 0;
-                  row_min_width[row] = 1;
-                }
-
-              if (child->expand)
-                new_row = TRUE;
-
-              if (child->homogeneous)
-                {
-                  col++;
-                  all_items++;
-                }
-              else
-                {
-                  GtkRequisition req = {0, 0};
-                  guint width;
-
-                  gtk_widget_get_preferred_size (GTK_WIDGET (child->item),
-                                                 &req, NULL);
-
-                  width = udiv (req.width, item_size.width);
-
-                  col += width;
-                  all_items += width;
-
-                  row_min_width[row] = MAX (row_min_width[row], width);
-                }
-
-              max_col = MAX (max_col, col);
-            }
-
-          /* calculate minimal required cols */
-          min_col = udiv (all_items, n_rows);
-
-          for (i = 0; i <= row; i++)
-            {
-              min_col = MAX (min_col, row_min_width[i]);
-            }
-
-          /* simple linear search for minimal required columns
-           * for the given maximal number of rows (n_rows)
-           */
-          for (n_columns = min_col; n_columns < max_col; n_columns ++)
-            {
-              new_row = TRUE;
-              row = -1;
-              /* calculate required rows for n_columns columns */
-              for (it = priv->children; it != NULL; it = it->next)
-                {
-                  GtkToolItemGroupChild *child = it->data;
-
-                  if (!gtk_tool_item_group_is_item_visible (group, child))
-                    continue;
-
-                  if (new_row || child->new_row)
-                    {
-                      new_row = FALSE;
-                      row++;
-                      col = 0;
-                    }
-
-                  if (child->expand)
-                    new_row = TRUE;
-
-                  if (child->homogeneous)
-                    {
-                      col++;
-                      if (col >= n_columns)
-                        new_row = TRUE;
-                    }
-                  else
-                    {
-                      GtkRequisition req = {0, 0};
-                      guint width;
-
-                      gtk_widget_get_preferred_size (GTK_WIDGET (child->item),
-                                                     &req, NULL);
-
-                      width = udiv (req.width, item_size.width);
-                      col += width;
-
-                      if (col > n_columns)
-                        row++;
-
-                      col = width;
-
-                      if (col >= n_columns)
-                        new_row = TRUE;
-                    }
-                }
-
-              if (row < n_rows)
-                break;
-            }
-        }
-
-      item_area.width = item_size.width * n_columns;
-      item_area.height = item_size.height * n_rows;
-    }
-
-  inquery->width = 0;
-  inquery->height = 0;
-
-  /* figure out header widget size */
-  if (gtk_widget_get_visible (priv->header))
-    {
-      GtkRequisition child_requisition;
-
-      gtk_widget_get_preferred_size (priv->header,
-                                     &child_requisition, NULL);
-
-      if (GTK_ORIENTATION_VERTICAL == orientation)
-        inquery->height += child_requisition.height;
-      else
-        inquery->width += child_requisition.width;
-    }
-
-  /* report effective widget size */
-  inquery->width += item_area.width;
-  inquery->height += item_area.height;
-}
-
-static void
-gtk_tool_item_group_real_size_allocate (GtkWidget           *widget,
-                                        const GtkAllocation *allocation,
-                                        int                  baseline,
-                                        GtkAllocation       *out_clip)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (widget);
-  GtkToolItemGroupPrivate* priv = group->priv;
-  GtkRequisition child_requisition;
-  GtkAllocation child_allocation;
-
-  GtkRequisition item_size;
-  GtkAllocation item_area;
-
-  GtkOrientation orientation;
-
-  GList *it;
-
-  gint n_columns, n_rows = 1;
-  gint min_rows;
-  GtkTextDirection direction;
-
-  direction = gtk_widget_get_direction (widget);
-
-  orientation = gtk_tool_shell_get_orientation (GTK_TOOL_SHELL (group));
-
-  /* chain up */
-  GTK_WIDGET_CLASS (gtk_tool_item_group_parent_class)->size_allocate (widget, allocation,
-                                                                      baseline, out_clip);
-
-  child_allocation.x = 0;
-  child_allocation.y = 0;
-
-  /* place the header widget */
-  if (gtk_widget_get_visible (priv->header))
-    {
-      gtk_widget_get_preferred_size (priv->header,
-                                     &child_requisition, NULL);
-
-      if (GTK_ORIENTATION_VERTICAL == orientation)
-        {
-          child_allocation.width = allocation->width;
-          child_allocation.height = child_requisition.height;
-        }
-      else
-        {
-          child_allocation.width = child_requisition.width;
-          child_allocation.height = allocation->height;
-
-          if (GTK_TEXT_DIR_RTL == direction)
-            child_allocation.x = allocation->width - child_allocation.width;
-        }
-
-      gtk_widget_size_allocate (priv->header, &child_allocation, -1, out_clip);
-
-      if (GTK_ORIENTATION_VERTICAL == orientation)
-        child_allocation.y += child_allocation.height;
-      else if (GTK_TEXT_DIR_RTL != direction)
-        child_allocation.x += child_allocation.width;
-      else
-        child_allocation.x = 0;
-    }
-  else
-    child_requisition.width = child_requisition.height = 0;
-
-  /* figure out the size of homogeneous items */
-  gtk_tool_item_group_get_item_size (group, &item_size, TRUE, &min_rows);
-
-  item_size.width  = MAX (item_size.width, 1);
-  item_size.height = MAX (item_size.height, 1);
-
-  /* figure out the available columns and size of item_area */
-  if (GTK_ORIENTATION_VERTICAL == orientation)
-    {
-      item_size.width = MIN (item_size.width, allocation->width);
-
-      item_area.width = allocation->width;
-      item_area.height = allocation->height - child_requisition.height;
-
-      n_columns = MAX (item_area.width / item_size.width, 1);
-
-      item_size.width = item_area.width / n_columns;
-    }
-  else
-    {
-      item_size.height = MIN (item_size.height, allocation->height);
-
-      item_area.width = allocation->width - child_requisition.width;
-      item_area.height = allocation->height;
-
-      n_columns = MAX (item_area.width / item_size.width, 1);
-      n_rows = MAX (item_area.height / item_size.height, min_rows);
-
-      item_size.height = item_area.height / n_rows;
-    }
-
-  item_area.x = child_allocation.x;
-  item_area.y = child_allocation.y;
-
-  /* when expanded or in transition, place the tool items in a grid like layout */
-  if (!priv->collapsed || !priv->animation || priv->animation_timeout)
-    {
-      gint col = 0, row = 0;
-
-      for (it = priv->children; it != NULL; it = it->next)
-        {
-          GtkToolItemGroupChild *child = it->data;
-          gint col_child;
-
-          if (!gtk_tool_item_group_is_item_visible (group, child))
-            {
-              gtk_widget_set_child_visible (GTK_WIDGET (child->item), FALSE);
-
-              continue;
-            }
-
-          /* for non homogeneous widgets request the required size */
-          child_requisition.width = 0;
-
-          if (!child->homogeneous)
-            {
-              gtk_widget_get_preferred_size (GTK_WIDGET (child->item),
-                                             &child_requisition, NULL);
-              child_requisition.width = MIN (child_requisition.width, item_area.width);
-            }
-
-          /* select next row if at end of row */
-          if (col > 0 && (child->new_row || (col * item_size.width) + MAX (child_requisition.width, item_size.width) > item_area.width))
-            {
-              row++;
-              col = 0;
-              child_allocation.y += child_allocation.height;
-            }
-
-          col_child = col;
-
-          /* calculate the position and size of the item */
-          if (!child->homogeneous)
-            {
-              gint col_width;
-              gint width;
-
-              if (!child->expand)
-                col_width = udiv (child_requisition.width, item_size.width);
-              else
-                col_width = n_columns - col;
-
-              width = col_width * item_size.width;
-
-              if (GTK_TEXT_DIR_RTL == direction)
-                col_child = (n_columns - col - col_width);
-
-              if (child->fill)
-                {
-                  child_allocation.x = item_area.x + col_child * item_size.width;
-                  child_allocation.width = width;
-                }
-              else
-                {
-                  child_allocation.x =
-                    (item_area.x + col_child * item_size.width +
-                    (width - child_requisition.width) / 2);
-                  child_allocation.width = child_requisition.width;
-                }
-
-              col += col_width;
-            }
-          else
-            {
-              if (GTK_TEXT_DIR_RTL == direction)
-                col_child = (n_columns - col - 1);
-
-              child_allocation.x = item_area.x + col_child * item_size.width;
-              child_allocation.width = item_size.width;
-
-              col++;
-            }
-
-          child_allocation.height = item_size.height;
-
-          gtk_widget_size_allocate (GTK_WIDGET (child->item), &child_allocation, -1, out_clip);
-          gtk_widget_set_child_visible (GTK_WIDGET (child->item), TRUE);
-        }
-
-      child_allocation.y += item_size.height;
-    }
-
-  /* or just hide all items, when collapsed */
-
-  else
-    {
-      for (it = priv->children; it != NULL; it = it->next)
-        {
-          GtkToolItemGroupChild *child = it->data;
-
-          gtk_widget_set_child_visible (GTK_WIDGET (child->item), FALSE);
-        }
-    }
-}
-
-static void
-gtk_tool_item_group_size_allocate (GtkWidget           *widget,
-                                   const GtkAllocation *allocation,
-                                   int                  baseline,
-                                   GtkAllocation       *out_clip)
-{
-  gtk_tool_item_group_real_size_allocate (widget, allocation, baseline, out_clip);
-}
-
-static void
-gtk_tool_item_group_set_focus_cb (GtkWidget *window,
-                                  GtkWidget *widget,
-                                  gpointer   user_data)
-{
-  GtkAdjustment *adjustment;
-  GtkAllocation allocation, p_allocation;
-  GtkWidget *p;
-
-  /* Find this group's parent widget in the focused widget's anchestry. */
-  for (p = widget; p; p = gtk_widget_get_parent (p))
-    if (p == user_data)
-      {
-        p = gtk_widget_get_parent (p);
-        break;
-      }
-
-  if (GTK_IS_TOOL_PALETTE (p))
-    {
-      /* Check that the focused widgets is fully visible within
-       * the group's parent widget and make it visible otherwise. */
-
-      adjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (p));
-
-      if (adjustment)
-        {
-          int y;
-
-          gtk_widget_get_allocation (widget, &allocation);
-          gtk_widget_get_allocation (p, &p_allocation);
-
-          /* Handle vertical adjustment. */
-          if (gtk_widget_translate_coordinates
-                (widget, p, 0, 0, NULL, &y) && y < 0)
-            {
-              y += gtk_adjustment_get_value (adjustment);
-              gtk_adjustment_clamp_page (adjustment, y, y + allocation.height);
-            }
-          else if (gtk_widget_translate_coordinates (widget, p, 0, allocation.height, NULL, &y) &&
-                   y > p_allocation.height)
-            {
-              y += gtk_adjustment_get_value (adjustment);
-              gtk_adjustment_clamp_page (adjustment, y - allocation.height, y);
-            }
-        }
-
-      adjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (p));
-
-      if (adjustment)
-        {
-          int x;
-
-          gtk_widget_get_allocation (widget, &allocation);
-          gtk_widget_get_allocation (p, &p_allocation);
-
-          /* Handle horizontal adjustment. */
-          if (gtk_widget_translate_coordinates
-                (widget, p, 0, 0, &x, NULL) && x < 0)
-            {
-              x += gtk_adjustment_get_value (adjustment);
-              gtk_adjustment_clamp_page (adjustment, x, x + allocation.width);
-            }
-          else if (gtk_widget_translate_coordinates (widget, p, allocation.width, 0, &x, NULL) &&
-                   x > p_allocation.width)
-            {
-              x += gtk_adjustment_get_value (adjustment);
-              gtk_adjustment_clamp_page (adjustment, x - allocation.width, x);
-            }
-
-          return;
-        }
-    }
-}
-
-static void
-gtk_tool_item_group_set_toplevel_window (GtkToolItemGroup *group,
-                                         GtkWidget        *toplevel)
-{
-  GtkToolItemGroupPrivate* priv = group->priv;
-
-  if (toplevel != priv->toplevel)
-    {
-      if (priv->toplevel)
-        {
-          /* Disconnect focus tracking handler. */
-          g_signal_handler_disconnect (priv->toplevel,
-                                       priv->focus_set_id);
-
-          priv->focus_set_id = 0;
-          priv->toplevel = NULL;
-        }
-
-      if (toplevel)
-        {
-          /* Install focus tracking handler. We connect to the window's
-           * set-focus signal instead of connecting to the focus signal of
-           * each child to:
-           *
-           * 1) Reduce the number of signal handlers used.
-           * 2) Avoid special handling for group headers.
-           * 3) Catch focus grabs not only for direct children,
-           *    but also for nested widgets.
-           */
-          priv->focus_set_id =
-            g_signal_connect (toplevel, "set-focus",
-                              G_CALLBACK (gtk_tool_item_group_set_focus_cb),
-                              group);
-
-          priv->toplevel = toplevel;
-        }
-    }
-}
-
-static void
-gtk_tool_item_group_realize (GtkWidget *widget)
-{
-  GtkWidget *toplevel_window;
-
-  GTK_WIDGET_CLASS (gtk_tool_item_group_parent_class)->realize (widget);
-
-  toplevel_window = gtk_widget_get_ancestor (widget, GTK_TYPE_WINDOW);
-  gtk_tool_item_group_set_toplevel_window (GTK_TOOL_ITEM_GROUP (widget),
-                                           toplevel_window);
-}
-
-static void
-gtk_tool_item_group_unrealize (GtkWidget *widget)
-{
-  gtk_tool_item_group_set_toplevel_window (GTK_TOOL_ITEM_GROUP (widget), NULL);
-  GTK_WIDGET_CLASS (gtk_tool_item_group_parent_class)->unrealize (widget);
-}
-
-static void
-gtk_tool_item_group_style_updated (GtkWidget *widget)
-{
-  gtk_tool_item_group_header_adjust_style (GTK_TOOL_ITEM_GROUP (widget));
-  GTK_WIDGET_CLASS (gtk_tool_item_group_parent_class)->style_updated (widget);
-}
-
-static void
-gtk_tool_item_group_state_flags_changed (GtkWidget     *widget,
-                                         GtkStateFlags  previous_flags)
-{
-  update_arrow_state (GTK_TOOL_ITEM_GROUP (widget));
-}
-
-static void
-gtk_tool_item_group_add (GtkContainer *container,
-                         GtkWidget    *widget)
-{
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (container));
-  g_return_if_fail (GTK_IS_TOOL_ITEM (widget));
-
-  gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (container),
-                              GTK_TOOL_ITEM (widget), -1);
-}
-
-static void
-gtk_tool_item_group_remove (GtkContainer *container,
-                            GtkWidget    *child)
-{
-  GtkToolItemGroup *group;
-  GtkToolItemGroupPrivate* priv;
-  GList *it;
-
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (container));
-  group = GTK_TOOL_ITEM_GROUP (container);
-  priv = group->priv;
-
-  for (it = priv->children; it != NULL; it = it->next)
-    {
-      GtkToolItemGroupChild *child_info = it->data;
-
-      if ((GtkWidget *)child_info->item == child)
-        {
-          g_object_unref (child);
-          gtk_widget_unparent (child);
-
-          g_free (child_info);
-          priv->children = g_list_delete_link (priv->children, it);
-
-          gtk_widget_queue_resize (GTK_WIDGET (container));
-          break;
-        }
-    }
-}
-
-static void
-gtk_tool_item_group_forall (GtkContainer *container,
-                            GtkCallback   callback,
-                            gpointer      callback_data)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (container);
-  GtkToolItemGroupPrivate* priv = group->priv;
-  GList *children;
-
-  children = priv->children;
-  while (children)
-    {
-      GtkToolItemGroupChild *child = children->data;
-      children = children->next; /* store pointer before call to callback
-                                   because the child pointer is invalid if the
-                                   child->item is removed from the item group
-                                   in callback */
-
-      callback (GTK_WIDGET (child->item), callback_data);
-    }
-}
-
-static GType
-gtk_tool_item_group_child_type (GtkContainer *container)
-{
-  return GTK_TYPE_TOOL_ITEM;
-}
-
-static GtkToolItemGroupChild *
-gtk_tool_item_group_get_child (GtkToolItemGroup  *group,
-                               GtkToolItem       *item,
-                               gint              *position,
-                               GList            **link)
-{
-  guint i;
-  GList *it;
-
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), NULL);
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM (item), NULL);
-
-  for (it = group->priv->children, i = 0; it != NULL; it = it->next, ++i)
-    {
-      GtkToolItemGroupChild *child = it->data;
-
-      if (child->item == item)
-        {
-          if (position)
-            *position = i;
-
-          if (link)
-            *link = it;
-
-          return child;
-        }
-    }
-
-  return NULL;
-}
-
-static void
-gtk_tool_item_group_get_item_packing (GtkToolItemGroup *group,
-                                      GtkToolItem      *item,
-                                      gboolean         *homogeneous,
-                                      gboolean         *expand,
-                                      gboolean         *fill,
-                                      gboolean         *new_row)
-{
-  GtkToolItemGroupChild *child;
-
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-  g_return_if_fail (GTK_IS_TOOL_ITEM (item));
-
-  child = gtk_tool_item_group_get_child (group, item, NULL, NULL);
-  if (!child)
-    return;
-
-  if (expand)
-    *expand = child->expand;
-
-  if (homogeneous)
-    *homogeneous = child->homogeneous;
-
-  if (fill)
-    *fill = child->fill;
-
-  if (new_row)
-    *new_row = child->new_row;
-}
-
-static void
-gtk_tool_item_group_set_item_packing (GtkToolItemGroup *group,
-                                      GtkToolItem      *item,
-                                      gboolean          homogeneous,
-                                      gboolean          expand,
-                                      gboolean          fill,
-                                      gboolean          new_row)
-{
-  GtkToolItemGroupChild *child;
-  gboolean changed = FALSE;
-
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-  g_return_if_fail (GTK_IS_TOOL_ITEM (item));
-
-  child = gtk_tool_item_group_get_child (group, item, NULL, NULL);
-  if (!child)
-    return;
-
-  gtk_widget_freeze_child_notify (GTK_WIDGET (item));
-
-  if (child->homogeneous != homogeneous)
-    {
-      child->homogeneous = homogeneous;
-      changed = TRUE;
-      gtk_widget_child_notify (GTK_WIDGET (item), "homogeneous");
-    }
-  if (child->expand != expand)
-    {
-      child->expand = expand;
-      changed = TRUE;
-      gtk_widget_child_notify (GTK_WIDGET (item), "expand");
-    }
-  if (child->fill != fill)
-    {
-      child->fill = fill;
-      changed = TRUE;
-      gtk_widget_child_notify (GTK_WIDGET (item), "fill");
-    }
-  if (child->new_row != new_row)
-    {
-      child->new_row = new_row;
-      changed = TRUE;
-      gtk_widget_child_notify (GTK_WIDGET (item), "new-row");
-    }
-
-  gtk_widget_thaw_child_notify (GTK_WIDGET (item));
-
-  if (changed
-      && gtk_widget_get_visible (GTK_WIDGET (group))
-      && gtk_widget_get_visible (GTK_WIDGET (item)))
-    gtk_widget_queue_resize (GTK_WIDGET (group));
-}
-
-static void
-gtk_tool_item_group_set_child_property (GtkContainer *container,
-                                        GtkWidget    *child,
-                                        guint         prop_id,
-                                        const GValue *value,
-                                        GParamSpec   *pspec)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (container);
-  GtkToolItem *item = GTK_TOOL_ITEM (child);
-  gboolean homogeneous, expand, fill, new_row;
-
-  if (prop_id != CHILD_PROP_POSITION)
-    gtk_tool_item_group_get_item_packing (group, item,
-                                          &homogeneous,
-                                          &expand,
-                                          &fill,
-                                          &new_row);
-
-  switch (prop_id)
-    {
-      case CHILD_PROP_HOMOGENEOUS:
-        gtk_tool_item_group_set_item_packing (group, item,
-                                              g_value_get_boolean (value),
-                                              expand,
-                                              fill,
-                                              new_row);
-        break;
-
-      case CHILD_PROP_EXPAND:
-        gtk_tool_item_group_set_item_packing (group, item,
-                                              homogeneous,
-                                              g_value_get_boolean (value),
-                                              fill,
-                                              new_row);
-        break;
-
-      case CHILD_PROP_FILL:
-        gtk_tool_item_group_set_item_packing (group, item,
-                                              homogeneous,
-                                              expand,
-                                              g_value_get_boolean (value),
-                                              new_row);
-        break;
-
-      case CHILD_PROP_NEW_ROW:
-        gtk_tool_item_group_set_item_packing (group, item,
-                                              homogeneous,
-                                              expand,
-                                              fill,
-                                              g_value_get_boolean (value));
-        break;
-
-      case CHILD_PROP_POSITION:
-        gtk_tool_item_group_set_item_position (group, item, g_value_get_int (value));
-        break;
-
-      default:
-        GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-gtk_tool_item_group_get_child_property (GtkContainer *container,
-                                        GtkWidget    *child,
-                                        guint         prop_id,
-                                        GValue       *value,
-                                        GParamSpec   *pspec)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (container);
-  GtkToolItem *item = GTK_TOOL_ITEM (child);
-  gboolean homogeneous, expand, fill, new_row;
-
-  if (prop_id != CHILD_PROP_POSITION)
-    gtk_tool_item_group_get_item_packing (group, item,
-                                          &homogeneous,
-                                          &expand,
-                                          &fill,
-                                          &new_row);
-
-  switch (prop_id)
-    {
-      case CHILD_PROP_HOMOGENEOUS:
-        g_value_set_boolean (value, homogeneous);
-        break;
-
-       case CHILD_PROP_EXPAND:
-        g_value_set_boolean (value, expand);
-        break;
-
-       case CHILD_PROP_FILL:
-        g_value_set_boolean (value, fill);
-        break;
-
-       case CHILD_PROP_NEW_ROW:
-        g_value_set_boolean (value, new_row);
-        break;
-
-     case CHILD_PROP_POSITION:
-        g_value_set_int (value, gtk_tool_item_group_get_item_position (group, item));
-        break;
-
-      default:
-        GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-gtk_tool_item_group_class_init (GtkToolItemGroupClass *cls)
-{
-  GObjectClass       *oclass = G_OBJECT_CLASS (cls);
-  GtkWidgetClass     *wclass = GTK_WIDGET_CLASS (cls);
-  GtkContainerClass  *cclass = GTK_CONTAINER_CLASS (cls);
-
-  oclass->set_property       = gtk_tool_item_group_set_property;
-  oclass->get_property       = gtk_tool_item_group_get_property;
-  oclass->finalize           = gtk_tool_item_group_finalize;
-  oclass->dispose            = gtk_tool_item_group_dispose;
-
-  wclass->measure              = gtk_tool_item_group_measure;
-  wclass->size_allocate        = gtk_tool_item_group_size_allocate;
-  wclass->realize              = gtk_tool_item_group_realize;
-  wclass->unrealize            = gtk_tool_item_group_unrealize;
-  wclass->style_updated        = gtk_tool_item_group_style_updated;
-  wclass->display_changed      = gtk_tool_item_group_display_changed;
-  wclass->state_flags_changed  = gtk_tool_item_group_state_flags_changed;
-
-  cclass->add                = gtk_tool_item_group_add;
-  cclass->remove             = gtk_tool_item_group_remove;
-  cclass->forall             = gtk_tool_item_group_forall;
-  cclass->child_type         = gtk_tool_item_group_child_type;
-  cclass->set_child_property = gtk_tool_item_group_set_child_property;
-  cclass->get_child_property = gtk_tool_item_group_get_child_property;
-
-  g_object_class_install_property (oclass, PROP_LABEL,
-                                   g_param_spec_string ("label",
-                                                        P_("Label"),
-                                                        P_("The human-readable title of this item group"),
-                                                        DEFAULT_LABEL,
-                                                        GTK_PARAM_READWRITE));
-
-  g_object_class_install_property (oclass, PROP_LABEL_WIDGET,
-                                   g_param_spec_object  ("label-widget",
-                                                        P_("Label widget"),
-                                                        P_("A widget to display in place of the usual label"),
-                                                        GTK_TYPE_WIDGET,
-                                                       GTK_PARAM_READWRITE));
-
-  g_object_class_install_property (oclass, PROP_COLLAPSED,
-                                   g_param_spec_boolean ("collapsed",
-                                                         P_("Collapsed"),
-                                                         P_("Whether the group has been collapsed and items are hidden"),
-                                                         DEFAULT_COLLAPSED,
-                                                         GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
-
-  g_object_class_install_property (oclass, PROP_ELLIPSIZE,
-                                   g_param_spec_enum ("ellipsize",
-                                                      P_("ellipsize"),
-                                                      P_("Ellipsize for item group headers"),
-                                                      PANGO_TYPE_ELLIPSIZE_MODE, DEFAULT_ELLIPSIZE,
-                                                      GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
-
-  g_object_class_install_property (oclass, PROP_RELIEF,
-                                   g_param_spec_enum ("header-relief",
-                                                      P_("Header Relief"),
-                                                      P_("Relief of the group header button"),
-                                                      GTK_TYPE_RELIEF_STYLE, GTK_RELIEF_NORMAL,
-                                                      GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
-
-  gtk_container_class_install_child_property (cclass, CHILD_PROP_HOMOGENEOUS,
-                                              g_param_spec_boolean ("homogeneous",
-                                                                    P_("Homogeneous"),
-                                                                    P_("Whether the item should be the same size as other homogeneous items"),
-                                                                    TRUE,
-                                                                    GTK_PARAM_READWRITE));
-
-  gtk_container_class_install_child_property (cclass, CHILD_PROP_EXPAND,
-                                              g_param_spec_boolean ("expand",
-                                                                    P_("Expand"),
-                                                                    P_("Whether the item should receive extra space when the group grows"),
-                                                                    FALSE,
-                                                                    GTK_PARAM_READWRITE)); 
-
-  gtk_container_class_install_child_property (cclass, CHILD_PROP_FILL,
-                                              g_param_spec_boolean ("fill",
-                                                                    P_("Fill"),
-                                                                    P_("Whether the item should fill the available space"),
-                                                                    TRUE,
-                                                                    GTK_PARAM_READWRITE));
-
-  gtk_container_class_install_child_property (cclass, CHILD_PROP_NEW_ROW,
-                                              g_param_spec_boolean ("new-row",
-                                                                    P_("New Row"),
-                                                                    P_("Whether the item should start a new row"),
-                                                                    FALSE,
-                                                                    GTK_PARAM_READWRITE));
-
-  gtk_container_class_install_child_property (cclass, CHILD_PROP_POSITION,
-                                              g_param_spec_int ("position",
-                                                                P_("Position"),
-                                                                P_("Position of the item within this group"),
-                                                                0,
-                                                                G_MAXINT,
-                                                                0,
-                                                                GTK_PARAM_READWRITE));
-
-  gtk_widget_class_set_css_name (wclass, I_("toolitemgroup"));
-}
-
-/**
- * gtk_tool_item_group_new:
- * @label: the label of the new group
- *
- * Creates a new tool item group with label @label.
- *
- * Returns: a new #GtkToolItemGroup.
- *
- * Since: 2.20
- */
-GtkWidget*
-gtk_tool_item_group_new (const gchar *label)
-{
-  return g_object_new (GTK_TYPE_TOOL_ITEM_GROUP, "label", label, NULL);
-}
-
-/**
- * gtk_tool_item_group_set_label:
- * @group: a #GtkToolItemGroup
- * @label: the new human-readable label of of the group
- *
- * Sets the label of the tool item group. The label is displayed in the header
- * of the group.
- *
- * Since: 2.20
- */
-void
-gtk_tool_item_group_set_label (GtkToolItemGroup *group,
-                               const gchar      *label)
-{
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-
-  if (!label)
-    gtk_tool_item_group_set_label_widget (group, NULL);
-  else
-    {
-      GtkWidget *child = gtk_label_new (label);
-      gtk_widget_show (child);
-
-      gtk_tool_item_group_set_label_widget (group, child);
-    }
-
-  g_object_notify (G_OBJECT (group), "label");
-}
-
-/**
- * gtk_tool_item_group_set_label_widget:
- * @group: a #GtkToolItemGroup
- * @label_widget: the widget to be displayed in place of the usual label
- *
- * Sets the label of the tool item group.
- * The label widget is displayed in the header of the group, in place
- * of the usual label.
- *
- * Since: 2.20
- */
-void
-gtk_tool_item_group_set_label_widget (GtkToolItemGroup *group,
-                                      GtkWidget        *label_widget)
-{
-  GtkToolItemGroupPrivate* priv;
-  GtkWidget *frame;
-
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-  g_return_if_fail (label_widget == NULL || GTK_IS_WIDGET (label_widget));
-  g_return_if_fail (label_widget == NULL || gtk_widget_get_parent (label_widget) == NULL);
-
-  priv = group->priv;
-
-  if (priv->label_widget == label_widget)
-    return;
-
-  frame = gtk_tool_item_group_get_frame (group);
-
-  if (priv->label_widget)
-    {
-      gtk_widget_set_state_flags (priv->label_widget, 0, TRUE);
-      gtk_container_remove (GTK_CONTAINER (frame), priv->label_widget);
-    }
-
-
-  if (label_widget)
-      gtk_container_add (GTK_CONTAINER (frame), label_widget);
-
-  priv->label_widget = label_widget;
-
-  if (gtk_widget_get_visible (GTK_WIDGET (group)))
-    gtk_widget_queue_resize (GTK_WIDGET (group));
-
-  /* Only show the header widget if the group has children: */
-  if (label_widget && priv->children)
-    gtk_widget_show (priv->header);
-  else
-    gtk_widget_hide (priv->header);
-
-  g_object_freeze_notify (G_OBJECT (group));
-  g_object_notify (G_OBJECT (group), "label-widget");
-  g_object_notify (G_OBJECT (group), "label");
-  g_object_thaw_notify (G_OBJECT (group));
-}
-
-/**
- * gtk_tool_item_group_set_header_relief:
- * @group: a #GtkToolItemGroup
- * @style: the #GtkReliefStyle
- *
- * Set the button relief of the group header.
- * See gtk_button_set_relief() for details.
- *
- * Since: 2.20
- */
-void
-gtk_tool_item_group_set_header_relief (GtkToolItemGroup *group,
-                                       GtkReliefStyle    style)
-{
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-
-  if (gtk_button_get_relief (GTK_BUTTON (group->priv->header)) != style)
-    {
-      gtk_button_set_relief (GTK_BUTTON (group->priv->header), style);
-      g_object_notify (G_OBJECT (group), "header-relief");
-    }
-}
-
-static gint64
-gtk_tool_item_group_get_animation_timestamp (GtkToolItemGroup *group)
-{
-  return (g_source_get_time (group->priv->animation_timeout) -
-          group->priv->animation_start) / 1000;
-}
-
-static void
-gtk_tool_item_group_force_expose (GtkToolItemGroup *group)
-{
-  GtkToolItemGroupPrivate* priv = group->priv;
-  GtkWidget *widget = GTK_WIDGET (group);
-
-  if (gtk_widget_get_realized (priv->header))
-    {
-      GtkAllocation frame_allocation;
-      GtkWidget *frame = gtk_tool_item_group_get_frame (group);
-
-      /* Find the header button's arrow area and
-       * invalidate it to get it animated. */
-      gtk_widget_get_allocation (frame, &frame_allocation);
-      gtk_widget_queue_draw_area (priv->header,
-                                  frame_allocation.x,
-                                  frame_allocation.y + (frame_allocation.height - DEFAULT_EXPANDER_SIZE) / 2,
-                                  DEFAULT_EXPANDER_SIZE,
-                                  DEFAULT_EXPANDER_SIZE);
-    }
-
-  if (gtk_widget_get_realized (widget))
-    {
-      GtkAllocation allocation;
-      GtkWidget *parent = gtk_widget_get_parent (widget);
-      int x, y, width, height;
-
-      /* Find the tool item area button's arrow area... */
-      gtk_widget_get_allocation (widget, &allocation);
-      width = allocation.width;
-      height = allocation.height;
-
-      gtk_widget_translate_coordinates (widget, parent, 0, 0, &x, &y);
-
-      if (gtk_widget_get_visible (priv->header))
-        {
-          GtkAllocation header_allocation;
-
-          gtk_widget_get_allocation (priv->header, &header_allocation);
-          height -= header_allocation.height;
-          y += header_allocation.height;
-        }
-
-      /* ... and invalidated it to get it animated. */
-      gtk_widget_queue_draw_area (parent, x, y, width, height);
-    }
-}
-
-static gboolean
-gtk_tool_item_group_animation_cb (gpointer data)
-{
-  GtkToolItemGroup *group = GTK_TOOL_ITEM_GROUP (data);
-  GtkToolItemGroupPrivate* priv = group->priv;
-  gint64 timestamp = gtk_tool_item_group_get_animation_timestamp (group);
-  gboolean retval;
-
-  gdk_threads_enter ();
-
-  /* Enque this early to reduce number of expose events. */
-  gtk_widget_queue_resize_no_redraw (GTK_WIDGET (group));
-
-  gtk_tool_item_group_force_expose (group);
-
-  /* Finish animation when done. */
-  if (timestamp >= ANIMATION_DURATION)
-    priv->animation_timeout = NULL;
-
-  retval = (priv->animation_timeout != NULL);
-
-  gdk_threads_leave ();
-
-  return retval;
-}
-
-/**
- * gtk_tool_item_group_set_collapsed:
- * @group: a #GtkToolItemGroup
- * @collapsed: whether the @group should be collapsed or expanded
- *
- * Sets whether the @group should be collapsed or expanded.
- *
- * Since: 2.20
- */
-void
-gtk_tool_item_group_set_collapsed (GtkToolItemGroup *group,
-                                   gboolean          collapsed)
-{
-  GtkWidget *parent;
-  GtkToolItemGroupPrivate* priv;
-
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-
-  priv = group->priv;
-
-  parent = gtk_widget_get_parent (GTK_WIDGET (group));
-  if (GTK_IS_TOOL_PALETTE (parent) && !collapsed)
-    _gtk_tool_palette_set_expanding_child (GTK_TOOL_PALETTE (parent),
-                                           GTK_WIDGET (group));
-  if (collapsed != priv->collapsed)
-    {
-      if (priv->animation)
-        {
-          if (priv->animation_timeout)
-            g_source_destroy (priv->animation_timeout);
-
-          priv->animation_start = g_get_monotonic_time ();
-          priv->animation_timeout = g_timeout_source_new (ANIMATION_TIMEOUT);
-
-          g_source_set_callback (priv->animation_timeout,
-                                 gtk_tool_item_group_animation_cb,
-                                 group, NULL);
-          g_source_attach (priv->animation_timeout, NULL);
-        }
-      else
-        gtk_tool_item_group_force_expose (group);
-
-      priv->collapsed = collapsed;
-      update_arrow_state (group);
-      g_object_notify (G_OBJECT (group), "collapsed");
-    }
-}
-
-/**
- * gtk_tool_item_group_set_ellipsize:
- * @group: a #GtkToolItemGroup
- * @ellipsize: the #PangoEllipsizeMode labels in @group should use
- *
- * Sets the ellipsization mode which should be used by labels in @group.
- *
- * Since: 2.20
- */
-void
-gtk_tool_item_group_set_ellipsize (GtkToolItemGroup   *group,
-                                   PangoEllipsizeMode  ellipsize)
-{
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-
-  if (ellipsize != group->priv->ellipsize)
-    {
-      group->priv->ellipsize = ellipsize;
-      gtk_tool_item_group_header_adjust_style (group);
-      g_object_notify (G_OBJECT (group), "ellipsize");
-      _gtk_tool_item_group_palette_reconfigured (group);
-    }
-}
-
-/**
- * gtk_tool_item_group_get_label:
- * @group: a #GtkToolItemGroup
- *
- * Gets the label of @group.
- *
- * Returns: the label of @group. The label is an internal string of @group
- *     and must not be modified. Note that %NULL is returned if a custom
- *     label has been set with gtk_tool_item_group_set_label_widget()
- *
- * Since: 2.20
- */
-const gchar*
-gtk_tool_item_group_get_label (GtkToolItemGroup *group)
-{
-  GtkToolItemGroupPrivate *priv;
-
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), NULL);
-
-  priv = group->priv;
-
-  if (GTK_IS_LABEL (priv->label_widget))
-    return gtk_label_get_label (GTK_LABEL (priv->label_widget));
-  else
-    return NULL;
-}
-
-/**
- * gtk_tool_item_group_get_label_widget:
- * @group: a #GtkToolItemGroup
- *
- * Gets the label widget of @group.
- * See gtk_tool_item_group_set_label_widget().
- *
- * Returns: (transfer none): the label widget of @group
- *
- * Since: 2.20
- */
-GtkWidget*
-gtk_tool_item_group_get_label_widget (GtkToolItemGroup *group)
-{
-  GtkWidget *frame = gtk_tool_item_group_get_frame (group);
-
-  return gtk_bin_get_child (GTK_BIN (frame));
-}
-
-/**
- * gtk_tool_item_group_get_collapsed:
- * @group: a GtkToolItemGroup
- *
- * Gets whether @group is collapsed or expanded.
- *
- * Returns: %TRUE if @group is collapsed, %FALSE if it is expanded
- *
- * Since: 2.20
- */
-gboolean
-gtk_tool_item_group_get_collapsed (GtkToolItemGroup *group)
-{
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), DEFAULT_COLLAPSED);
-
-  return group->priv->collapsed;
-}
-
-/**
- * gtk_tool_item_group_get_ellipsize:
- * @group: a #GtkToolItemGroup
- *
- * Gets the ellipsization mode of @group.
- *
- * Returns: the #PangoEllipsizeMode of @group
- *
- * Since: 2.20
- */
-PangoEllipsizeMode
-gtk_tool_item_group_get_ellipsize (GtkToolItemGroup *group)
-{
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), DEFAULT_ELLIPSIZE);
-
-  return group->priv->ellipsize;
-}
-
-/**
- * gtk_tool_item_group_get_header_relief:
- * @group: a #GtkToolItemGroup
- *
- * Gets the relief mode of the header button of @group.
- *
- * Returns: the #GtkReliefStyle
- *
- * Since: 2.20
- */
-GtkReliefStyle
-gtk_tool_item_group_get_header_relief (GtkToolItemGroup   *group)
-{
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), GTK_RELIEF_NORMAL);
-
-  return gtk_button_get_relief (GTK_BUTTON (group->priv->header));
-}
-
-/**
- * gtk_tool_item_group_insert:
- * @group: a #GtkToolItemGroup
- * @item: the #GtkToolItem to insert into @group
- * @position: the position of @item in @group, starting with 0.
- *     The position -1 means end of list.
- *
- * Inserts @item at @position in the list of children of @group.
- *
- * Since: 2.20
- */
-void
-gtk_tool_item_group_insert (GtkToolItemGroup *group,
-                            GtkToolItem      *item,
-                            gint              position)
-{
-  GtkWidget *parent, *child_widget;
-  GtkToolItemGroupChild *child;
-
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-  g_return_if_fail (GTK_IS_TOOL_ITEM (item));
-  g_return_if_fail (position >= -1);
-
-  parent = gtk_widget_get_parent (GTK_WIDGET (group));
-
-  child = g_new (GtkToolItemGroupChild, 1);
-  child->item = g_object_ref_sink (item);
-  child->homogeneous = TRUE;
-  child->expand = FALSE;
-  child->fill = TRUE;
-  child->new_row = FALSE;
-
-  group->priv->children = g_list_insert (group->priv->children, child, position);
-
-  if (GTK_IS_TOOL_PALETTE (parent))
-    _gtk_tool_palette_child_set_drag_source (GTK_WIDGET (item), parent);
-
-  child_widget = gtk_bin_get_child (GTK_BIN (item));
-
-  gtk_widget_set_focus_on_click (child_widget, TRUE);
-
-  gtk_widget_set_parent (GTK_WIDGET (item), GTK_WIDGET (group));
-}
-
-/**
- * gtk_tool_item_group_set_item_position:
- * @group: a #GtkToolItemGroup
- * @item: the #GtkToolItem to move to a new position, should
- *     be a child of @group.
- * @position: the new position of @item in @group, starting with 0.
- *     The position -1 means end of list.
- *
- * Sets the position of @item in the list of children of @group.
- *
- * Since: 2.20
- */
-void
-gtk_tool_item_group_set_item_position (GtkToolItemGroup *group,
-                                       GtkToolItem      *item,
-                                       gint              position)
-{
-  gint old_position;
-  GList *link;
-  GtkToolItemGroupChild *child;
-  GtkToolItemGroupPrivate* priv;
-
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-  g_return_if_fail (GTK_IS_TOOL_ITEM (item));
-  g_return_if_fail (position >= -1);
-
-  child = gtk_tool_item_group_get_child (group, item, &old_position, &link);
-  priv = group->priv;
-
-  g_return_if_fail (child != NULL);
-
-  if (position == old_position)
-    return;
-
-  priv->children = g_list_delete_link (priv->children, link);
-  priv->children = g_list_insert (priv->children, child, position);
-
-  gtk_widget_child_notify (GTK_WIDGET (item), "position");
-  if (gtk_widget_get_visible (GTK_WIDGET (group)) &&
-      gtk_widget_get_visible (GTK_WIDGET (item)))
-    gtk_widget_queue_resize (GTK_WIDGET (group));
-}
-
-/**
- * gtk_tool_item_group_get_item_position:
- * @group: a #GtkToolItemGroup
- * @item: a #GtkToolItem
- *
- * Gets the position of @item in @group as index.
- *
- * Returns: the index of @item in @group or -1 if @item is no child of @group
- *
- * Since: 2.20
- */
-gint
-gtk_tool_item_group_get_item_position (GtkToolItemGroup *group,
-                                       GtkToolItem      *item)
-{
-  gint position;
-
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), -1);
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM (item), -1);
-
-  if (gtk_tool_item_group_get_child (group, item, &position, NULL))
-    return position;
-
-  return -1;
-}
-
-/**
- * gtk_tool_item_group_get_n_items:
- * @group: a #GtkToolItemGroup
- *
- * Gets the number of tool items in @group.
- *
- * Returns: the number of tool items in @group
- *
- * Since: 2.20
- */
-guint
-gtk_tool_item_group_get_n_items (GtkToolItemGroup *group)
-{
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), 0);
-
-  return g_list_length (group->priv->children);
-}
-
-/**
- * gtk_tool_item_group_get_nth_item:
- * @group: a #GtkToolItemGroup
- * @index: the index
- *
- * Gets the tool item at @index in group.
- *
- * Returns: (transfer none): the #GtkToolItem at index
- *
- * Since: 2.20
- */
-GtkToolItem*
-gtk_tool_item_group_get_nth_item (GtkToolItemGroup *group,
-                                  guint             index)
-{
-  GtkToolItemGroupChild *child;
-
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), NULL);
-
-  child = g_list_nth_data (group->priv->children, index);
-
-  return child != NULL ? child->item : NULL;
-}
-
-/**
- * gtk_tool_item_group_get_drop_item:
- * @group: a #GtkToolItemGroup
- * @x: the x position
- * @y: the y position
- *
- * Gets the tool item at position (x, y).
- *
- * Returns: (transfer none): the #GtkToolItem at position (x, y)
- *
- * Since: 2.20
- */
-GtkToolItem*
-gtk_tool_item_group_get_drop_item (GtkToolItemGroup *group,
-                                   gint              x,
-                                   gint              y)
-{
-  GtkAllocation allocation;
-  GList *it;
-
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), NULL);
-
-  gtk_widget_get_allocation (GTK_WIDGET (group), &allocation);
-
-  g_return_val_if_fail (x >= 0 && x < allocation.width, NULL);
-  g_return_val_if_fail (y >= 0 && y < allocation.height, NULL);
-
-  for (it = group->priv->children; it != NULL; it = it->next)
-    {
-      GtkToolItemGroupChild *child = it->data;
-      GtkToolItem *item = child->item;
-      gint x0, y0;
-
-      if (!item || !gtk_tool_item_group_is_item_visible (group, child))
-        continue;
-
-      gtk_widget_get_allocation (GTK_WIDGET (item), &allocation);
-
-      x0 = x - allocation.x;
-      y0 = y - allocation.y;
-
-      if (x0 >= 0 && x0 < allocation.width &&
-          y0 >= 0 && y0 < allocation.height)
-        return item;
-    }
-
-  return NULL;
-}
-
-void
-_gtk_tool_item_group_item_size_request (GtkToolItemGroup *group,
-                                        GtkRequisition   *item_size,
-                                        gboolean          homogeneous_only,
-                                        gint             *requested_rows)
-{
-  GtkRequisition child_requisition;
-  GList *it;
-  gint rows = 0;
-  gboolean new_row = TRUE;
-
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-  g_return_if_fail (NULL != item_size);
-
-  item_size->width = item_size->height = 0;
-
-  for (it = group->priv->children; it != NULL; it = it->next)
-    {
-      GtkToolItemGroupChild *child = it->data;
-
-      if (!gtk_tool_item_group_is_item_visible (group, child))
-        continue;
-
-      if (child->new_row || new_row)
-        {
-          rows++;
-          new_row = FALSE;
-        }
-
-      if (!child->homogeneous && child->expand)
-          new_row = TRUE;
-
-      gtk_widget_get_preferred_size (GTK_WIDGET (child->item),
-                                     &child_requisition, NULL);
-
-      if (!homogeneous_only || child->homogeneous)
-        item_size->width = MAX (item_size->width, child_requisition.width);
-      item_size->height = MAX (item_size->height, child_requisition.height);
-    }
-
-  if (requested_rows)
-    *requested_rows = rows;
-}
-
-gint
-_gtk_tool_item_group_get_size_for_limit (GtkToolItemGroup *group,
-                                         gint              limit,
-                                         gboolean          vertical,
-                                         gboolean          animation)
-{
-  GtkRequisition requisition;
-  GtkToolItemGroupPrivate* priv = group->priv;
-
-  gtk_widget_get_preferred_size (GTK_WIDGET (group),
-                                 &requisition, NULL);
-
-  if (!priv->collapsed || priv->animation_timeout)
-    {
-      GtkAllocation allocation = { 0, 0, requisition.width, requisition.height };
-      GtkRequisition inquery;
-
-      if (vertical)
-        allocation.width = limit;
-      else
-        allocation.height = limit;
-
-      gtk_tool_item_group_real_size_query (GTK_WIDGET (group),
-                                           &allocation, &inquery);
-
-      if (vertical)
-        inquery.height -= requisition.height;
-      else
-        inquery.width -= requisition.width;
-
-      if (priv->animation_timeout && animation)
-        {
-          gint64 timestamp = gtk_tool_item_group_get_animation_timestamp (group);
-
-          timestamp = MIN (timestamp, ANIMATION_DURATION);
-
-          if (priv->collapsed)
-            timestamp = ANIMATION_DURATION - timestamp;
-
-          if (vertical)
-            {
-              inquery.height *= timestamp;
-              inquery.height /= ANIMATION_DURATION;
-            }
-          else
-            {
-              inquery.width *= timestamp;
-              inquery.width /= ANIMATION_DURATION;
-            }
-        }
-
-      if (vertical)
-        requisition.height += inquery.height;
-      else
-        requisition.width += inquery.width;
-    }
-
-  return (vertical ? requisition.height : requisition.width);
-}
-
-gint
-_gtk_tool_item_group_get_height_for_width (GtkToolItemGroup *group,
-                                           gint              width)
-{
-  return _gtk_tool_item_group_get_size_for_limit (group, width, TRUE, group->priv->animation);
-}
-
-gint
-_gtk_tool_item_group_get_width_for_height (GtkToolItemGroup *group,
-                                           gint              height)
-{
-  return _gtk_tool_item_group_get_size_for_limit (group, height, FALSE, TRUE);
-}
-
-static void
-gtk_tool_palette_reconfigured_foreach_item (GtkWidget *child,
-                                            gpointer   data)
-{
-  if (GTK_IS_TOOL_ITEM (child))
-    gtk_tool_item_toolbar_reconfigured (GTK_TOOL_ITEM (child));
-}
-
-
-void
-_gtk_tool_item_group_palette_reconfigured (GtkToolItemGroup *group)
-{
-  gtk_container_foreach (GTK_CONTAINER (group),
-                         gtk_tool_palette_reconfigured_foreach_item,
-                         NULL);
-
-  gtk_tool_item_group_header_adjust_style (group);
-}
diff --git a/gtk/gtktoolitemgroup.h b/gtk/gtktoolitemgroup.h
deleted file mode 100644 (file)
index 34bef65..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* GtkToolPalette -- A tool palette with categories and DnD support
- * Copyright (C) 2008  Openismus GmbH
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *      Mathias Hasselmann
- */
-
-#ifndef __GTK_TOOL_ITEM_GROUP_H__
-#define __GTK_TOOL_ITEM_GROUP_H__
-
-#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
-#error "Only <gtk/gtk.h> can be included directly."
-#endif
-
-#include <gtk/gtkcontainer.h>
-#include <gtk/gtktoolitem.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_TOOL_ITEM_GROUP           (gtk_tool_item_group_get_type ())
-#define GTK_TOOL_ITEM_GROUP(obj)           (G_TYPE_CHECK_INSTANCE_CAST (obj, GTK_TYPE_TOOL_ITEM_GROUP, GtkToolItemGroup))
-#define GTK_TOOL_ITEM_GROUP_CLASS(cls)     (G_TYPE_CHECK_CLASS_CAST (cls, GTK_TYPE_TOOL_ITEM_GROUP, GtkToolItemGroupClass))
-#define GTK_IS_TOOL_ITEM_GROUP(obj)        (G_TYPE_CHECK_INSTANCE_TYPE (obj, GTK_TYPE_TOOL_ITEM_GROUP))
-#define GTK_IS_TOOL_ITEM_GROUP_CLASS(obj)  (G_TYPE_CHECK_CLASS_TYPE (obj, GTK_TYPE_TOOL_ITEM_GROUP))
-#define GTK_TOOL_ITEM_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TOOL_ITEM_GROUP, GtkToolItemGroupClass))
-
-typedef struct _GtkToolItemGroup        GtkToolItemGroup;
-typedef struct _GtkToolItemGroupClass   GtkToolItemGroupClass;
-typedef struct _GtkToolItemGroupPrivate GtkToolItemGroupPrivate;
-
-/**
- * GtkToolItemGroup:
- *
- * This should not be accessed directly. Use the accessor functions below.
- */
-struct _GtkToolItemGroup
-{
-  GtkContainer parent_instance;
-  GtkToolItemGroupPrivate *priv;
-};
-
-/**
- * GtkToolItemGroupClass:
- * @parent_class: The parent class.
- */
-struct _GtkToolItemGroupClass
-{
-  GtkContainerClass parent_class;
-
-  /*< private >*/
-
-  /* Padding for future expansion */
-  void (*_gtk_reserved1) (void);
-  void (*_gtk_reserved2) (void);
-  void (*_gtk_reserved3) (void);
-  void (*_gtk_reserved4) (void);
-};
-
-GDK_AVAILABLE_IN_ALL
-GType                 gtk_tool_item_group_get_type          (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-GtkWidget*            gtk_tool_item_group_new               (const gchar        *label);
-
-GDK_AVAILABLE_IN_ALL
-void                  gtk_tool_item_group_set_label         (GtkToolItemGroup   *group,
-                                                             const gchar        *label);
-GDK_AVAILABLE_IN_ALL
-void                  gtk_tool_item_group_set_label_widget  (GtkToolItemGroup   *group,
-                                                             GtkWidget          *label_widget);
-GDK_AVAILABLE_IN_ALL
-void                  gtk_tool_item_group_set_collapsed      (GtkToolItemGroup  *group,
-                                                             gboolean            collapsed);
-GDK_AVAILABLE_IN_ALL
-void                  gtk_tool_item_group_set_ellipsize     (GtkToolItemGroup   *group,
-                                                             PangoEllipsizeMode  ellipsize);
-GDK_AVAILABLE_IN_ALL
-void                  gtk_tool_item_group_set_header_relief (GtkToolItemGroup   *group,
-                                                             GtkReliefStyle      style);
-
-GDK_AVAILABLE_IN_ALL
-const gchar *         gtk_tool_item_group_get_label         (GtkToolItemGroup   *group);
-GDK_AVAILABLE_IN_ALL
-GtkWidget            *gtk_tool_item_group_get_label_widget  (GtkToolItemGroup   *group);
-GDK_AVAILABLE_IN_ALL
-gboolean              gtk_tool_item_group_get_collapsed     (GtkToolItemGroup   *group);
-GDK_AVAILABLE_IN_ALL
-PangoEllipsizeMode    gtk_tool_item_group_get_ellipsize     (GtkToolItemGroup   *group);
-GDK_AVAILABLE_IN_ALL
-GtkReliefStyle        gtk_tool_item_group_get_header_relief (GtkToolItemGroup   *group);
-
-GDK_AVAILABLE_IN_ALL
-void                  gtk_tool_item_group_insert            (GtkToolItemGroup   *group,
-                                                             GtkToolItem        *item,
-                                                             gint                position);
-GDK_AVAILABLE_IN_ALL
-void                  gtk_tool_item_group_set_item_position (GtkToolItemGroup   *group,
-                                                             GtkToolItem        *item,
-                                                             gint                position);
-GDK_AVAILABLE_IN_ALL
-gint                  gtk_tool_item_group_get_item_position (GtkToolItemGroup   *group,
-                                                             GtkToolItem        *item);
-
-GDK_AVAILABLE_IN_ALL
-guint                 gtk_tool_item_group_get_n_items       (GtkToolItemGroup   *group);
-GDK_AVAILABLE_IN_ALL
-GtkToolItem*          gtk_tool_item_group_get_nth_item      (GtkToolItemGroup   *group,
-                                                             guint               index);
-GDK_AVAILABLE_IN_ALL
-GtkToolItem*          gtk_tool_item_group_get_drop_item     (GtkToolItemGroup   *group,
-                                                             gint                x,
-                                                             gint                y);
-
-G_END_DECLS
-
-#endif /* __GTK_TOOL_ITEM_GROUP_H__ */
diff --git a/gtk/gtktoolpalette.c b/gtk/gtktoolpalette.c
deleted file mode 100644 (file)
index a30d869..0000000
+++ /dev/null
@@ -1,1712 +0,0 @@
-/* GtkToolPalette -- A tool palette with categories and DnD support
- * Copyright (C) 2008  Openismus GmbH
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *      Mathias Hasselmann
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <gtk/gtk.h>
-
-#include "gtktoolpaletteprivate.h"
-#include "gtkmarshalers.h"
-#include "gtktypebuiltins.h"
-#include "gtkprivate.h"
-#include "gtkscrollable.h"
-#include "gtkorientableprivate.h"
-#include "gtkwidgetprivate.h"
-#include "gtkintl.h"
-
-#define DEFAULT_ORIENTATION     GTK_ORIENTATION_VERTICAL
-#define DEFAULT_TOOLBAR_STYLE   GTK_TOOLBAR_ICONS
-
-#define DEFAULT_CHILD_EXCLUSIVE FALSE
-#define DEFAULT_CHILD_EXPAND    FALSE
-
-/**
- * SECTION:gtktoolpalette
- * @Short_description: A tool palette with categories
- * @Title: GtkToolPalette
- *
- * A #GtkToolPalette allows you to add #GtkToolItems to a palette-like
- * container with different categories and drag and drop support.
- *
- * A #GtkToolPalette is created with a call to gtk_tool_palette_new().
- *
- * #GtkToolItems cannot be added directly to a #GtkToolPalette - 
- * instead they are added to a #GtkToolItemGroup which can than be added
- * to a #GtkToolPalette. To add a #GtkToolItemGroup to a #GtkToolPalette,
- * use gtk_container_add().
- *
- * |[<!-- language="C" -->
- * GtkWidget *palette, *group;
- * GtkToolItem *item;
- *
- * palette = gtk_tool_palette_new ();
- * group = gtk_tool_item_group_new (_("Test Category"));
- * gtk_container_add (GTK_CONTAINER (palette), group);
- *
- * item = gtk_tool_button_new (NULL, _("_Open"));
- * gtk_tool_button_set_icon_name (GTK_TOOL_BUTTON (item), "document-open");
- * gtk_tool_item_group_insert (GTK_TOOL_ITEM_GROUP (group), item, -1);
- * ]|
- *
- * The easiest way to use drag and drop with #GtkToolPalette is to call
- * gtk_tool_palette_add_drag_dest() with the desired drag source @palette
- * and the desired drag target @widget. Then gtk_tool_palette_get_drag_item()
- * can be used to get the dragged item in the #GtkWidget::drag-data-received
- * signal handler of the drag target.
- *
- * |[<!-- language="C" -->
- * static void
- * passive_canvas_drag_data_received (GtkWidget        *widget,
- *                                    GdkDragContext   *context,
- *                                    gint              x,
- *                                    gint              y,
- *                                    GtkSelectionData *selection,
- *                                    guint             info,
- *                                    guint             time,
- *                                    gpointer          data)
- * {
- *   GtkWidget *palette;
- *   GtkWidget *item;
- *
- *   // Get the dragged item
- *   palette = gtk_widget_get_ancestor (gtk_drag_get_source_widget (context),
- *                                      GTK_TYPE_TOOL_PALETTE);
- *   if (palette != NULL)
- *     item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (palette),
- *                                            selection);
- *
- *   // Do something with item
- * }
- *
- * GtkWidget *target, palette;
- *
- * palette = gtk_tool_palette_new ();
- * target = gtk_drawing_area_new ();
- *
- * g_signal_connect (G_OBJECT (target), "drag-data-received",
- *                   G_CALLBACK (passive_canvas_drag_data_received), NULL);
- * gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette), target,
- *                                 GTK_DEST_DEFAULT_ALL,
- *                                 GTK_TOOL_PALETTE_DRAG_ITEMS,
- *                                 GDK_ACTION_COPY);
- * ]|
- *
- * # CSS nodes
- *
- * GtkToolPalette has a single CSS node named toolpalette.
- *
- * Since: 2.20
- */
-
-typedef struct _GtkToolItemGroupInfo   GtkToolItemGroupInfo;
-typedef struct _GtkToolPaletteDragData GtkToolPaletteDragData;
-
-enum
-{
-  PROP_NONE,
-  PROP_ORIENTATION,
-  PROP_TOOLBAR_STYLE,
-  PROP_HADJUSTMENT,
-  PROP_VADJUSTMENT,
-  PROP_HSCROLL_POLICY,
-  PROP_VSCROLL_POLICY
-};
-
-enum
-{
-  CHILD_PROP_NONE,
-  CHILD_PROP_EXCLUSIVE,
-  CHILD_PROP_EXPAND,
-};
-
-struct _GtkToolItemGroupInfo
-{
-  GtkToolItemGroup *widget;
-
-  gulong            notify_collapsed;
-  guint             pos;
-  guint             exclusive : 1;
-  guint             expand : 1;
-};
-
-struct _GtkToolPalettePrivate
-{
-  GPtrArray* groups;
-
-  GtkAdjustment        *hadjustment;
-  GtkAdjustment        *vadjustment;
-
-  GtkOrientation        orientation;
-  GtkToolbarStyle       style;
-  gboolean              style_set;
-
-  GtkWidget            *expanding_child;
-
-  GtkSizeGroup         *text_size_group;
-
-  guint                 drag_source : 2;
-
-  /* GtkScrollablePolicy needs to be checked when
-   * driving the scrollable adjustment values */
-  guint hscroll_policy : 1;
-  guint vscroll_policy : 1;
-};
-
-struct _GtkToolPaletteDragData
-{
-  GtkToolPalette *palette;
-  GtkWidget      *item;
-};
-
-static GdkAtom dnd_target_atom_item = NULL;
-static GdkAtom dnd_target_atom_group = NULL;
-
-static const char *dnd_targets[] =
-{
-  "application/x-gtk-tool-palette-item",
-  "application/x-gtk-tool-palette-group"
-};
-
-static void gtk_tool_palette_set_hadjustment (GtkToolPalette *palette,
-                                              GtkAdjustment  *adjustment);
-static void gtk_tool_palette_set_vadjustment (GtkToolPalette *palette,
-                                              GtkAdjustment  *adjustment);
-
-
-G_DEFINE_TYPE_WITH_CODE (GtkToolPalette,
-                         gtk_tool_palette,
-                         GTK_TYPE_CONTAINER,
-                         G_ADD_PRIVATE (GtkToolPalette)
-                         G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE, NULL)
-                         G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
-
-static void
-gtk_tool_palette_init (GtkToolPalette *palette)
-{
-  palette->priv = gtk_tool_palette_get_instance_private (palette);
-  palette->priv->groups = g_ptr_array_sized_new (4);
-  g_ptr_array_set_free_func (palette->priv->groups, g_free);
-
-  palette->priv->orientation = DEFAULT_ORIENTATION;
-  palette->priv->style = DEFAULT_TOOLBAR_STYLE;
-  palette->priv->style_set = FALSE;
-
-  palette->priv->text_size_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH);
-
-  if (dnd_target_atom_item == NULL)
-    {
-      dnd_target_atom_item = g_intern_static_string (dnd_targets[0]);
-      dnd_target_atom_group = g_intern_static_string (dnd_targets[1]);
-    }
-
-  gtk_widget_set_has_window (GTK_WIDGET (palette), FALSE);
-}
-
-static void
-gtk_tool_palette_reconfigured (GtkToolPalette *palette)
-{
-  guint i;
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *info = g_ptr_array_index (palette->priv->groups, i);
-      if (info->widget)
-        _gtk_tool_item_group_palette_reconfigured (info->widget);
-    }
-
-  gtk_widget_queue_resize_no_redraw (GTK_WIDGET (palette));
-}
-
-static void
-gtk_tool_palette_set_property (GObject      *object,
-                               guint         prop_id,
-                               const GValue *value,
-                               GParamSpec   *pspec)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (object);
-
-  switch (prop_id)
-    {
-      case PROP_ORIENTATION:
-        if (palette->priv->orientation != g_value_get_enum (value))
-          {
-            palette->priv->orientation = g_value_get_enum (value);
-            _gtk_orientable_set_style_classes (GTK_ORIENTABLE (palette));
-            gtk_tool_palette_reconfigured (palette);
-            g_object_notify_by_pspec (object, pspec);
-          }
-        break;
-
-      case PROP_TOOLBAR_STYLE:
-        if (palette->priv->style != g_value_get_enum (value))
-          {
-            palette->priv->style = g_value_get_enum (value);
-            gtk_tool_palette_reconfigured (palette);
-            g_object_notify_by_pspec (object, pspec);
-          }
-        break;
-
-      case PROP_HADJUSTMENT:
-        gtk_tool_palette_set_hadjustment (palette, g_value_get_object (value));
-        break;
-
-      case PROP_VADJUSTMENT:
-        gtk_tool_palette_set_vadjustment (palette, g_value_get_object (value));
-        break;
-
-      case PROP_HSCROLL_POLICY:
-        if (palette->priv->hscroll_policy != g_value_get_enum (value))
-          {
-           palette->priv->hscroll_policy = g_value_get_enum (value);
-           gtk_widget_queue_resize (GTK_WIDGET (palette));
-            g_object_notify_by_pspec (object, pspec);
-          }
-       break;
-
-      case PROP_VSCROLL_POLICY:
-        if (palette->priv->vscroll_policy != g_value_get_enum (value))
-          {
-           palette->priv->vscroll_policy = g_value_get_enum (value);
-           gtk_widget_queue_resize (GTK_WIDGET (palette));
-            g_object_notify_by_pspec (object, pspec);
-          }
-       break;
-
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-gtk_tool_palette_get_property (GObject    *object,
-                               guint       prop_id,
-                               GValue     *value,
-                               GParamSpec *pspec)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (object);
-
-  switch (prop_id)
-    {
-      case PROP_ORIENTATION:
-        g_value_set_enum (value, palette->priv->orientation);
-        break;
-
-      case PROP_TOOLBAR_STYLE:
-        g_value_set_enum (value, gtk_tool_palette_get_style (palette));
-        break;
-
-      case PROP_HADJUSTMENT:
-        g_value_set_object (value, palette->priv->hadjustment);
-        break;
-
-      case PROP_VADJUSTMENT:
-        g_value_set_object (value, palette->priv->vadjustment);
-        break;
-
-      case PROP_HSCROLL_POLICY:
-       g_value_set_enum (value, palette->priv->hscroll_policy);
-       break;
-
-      case PROP_VSCROLL_POLICY:
-       g_value_set_enum (value, palette->priv->vscroll_policy);
-       break;
-
-      default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-gtk_tool_palette_dispose (GObject *object)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (object);
-  guint i;
-
-  if (palette->priv->hadjustment)
-    {
-      g_object_unref (palette->priv->hadjustment);
-      palette->priv->hadjustment = NULL;
-    }
-
-  if (palette->priv->vadjustment)
-    {
-      g_object_unref (palette->priv->vadjustment);
-      palette->priv->vadjustment = NULL;
-    }
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *group = g_ptr_array_index (palette->priv->groups, i);
-
-      if (group->notify_collapsed)
-        {
-          g_signal_handler_disconnect (group->widget, group->notify_collapsed);
-          group->notify_collapsed = 0;
-        }
-    }
-
-  if (palette->priv->text_size_group)
-    {
-      g_object_unref (palette->priv->text_size_group);
-      palette->priv->text_size_group = NULL;
-    }
-
-  G_OBJECT_CLASS (gtk_tool_palette_parent_class)->dispose (object);
-}
-
-static void
-gtk_tool_palette_finalize (GObject *object)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (object);
-
-  g_ptr_array_free (palette->priv->groups, TRUE);
-
-  G_OBJECT_CLASS (gtk_tool_palette_parent_class)->finalize (object);
-}
-
-static void
-gtk_tool_palette_size_request (GtkWidget      *widget,
-                               GtkRequisition *requisition)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (widget);
-  GtkRequisition child_requisition;
-  guint i;
-
-  requisition->width = 0;
-  requisition->height = 0;
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *group = g_ptr_array_index (palette->priv->groups, i);
-
-      if (!group->widget)
-        continue;
-
-      gtk_widget_get_preferred_size (GTK_WIDGET (group->widget),
-                                     &child_requisition, NULL);
-
-      if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-        {
-          requisition->width = MAX (requisition->width, child_requisition.width);
-          requisition->height += child_requisition.height;
-        }
-      else
-        {
-          requisition->width += child_requisition.width;
-          requisition->height = MAX (requisition->height, child_requisition.height);
-        }
-    }
-}
-
-static void
-gtk_tool_palette_measure (GtkWidget      *widget,
-                          GtkOrientation  orientation,
-                          int             for_size,
-                          int            *minimum,
-                          int            *natural,
-                          int            *minimum_baseline,
-                          int            *natural_baseline)
-{
-  GtkRequisition requisition;
-
-  gtk_tool_palette_size_request (widget, &requisition);
-
-  if (orientation == GTK_ORIENTATION_HORIZONTAL)
-    *minimum = *natural = requisition.width;
-  else
-    *minimum = *natural = requisition.height;
-}
-
-
-static void
-gtk_tool_palette_size_allocate (GtkWidget           *widget,
-                                const GtkAllocation *allocation,
-                                int                  baseline,
-                                GtkAllocation       *out_clip)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (widget);
-  GtkAdjustment *adjustment = NULL;
-  GtkAllocation child_allocation;
-
-  gint n_expand_groups = 0;
-  gint remaining_space = 0;
-  gint expand_space = 0;
-
-  gint total_size, page_size;
-  gint offset = 0;
-  guint i;
-
-  gint min_offset = -1, max_offset = -1;
-
-  gint x;
-
-  gint *group_sizes = g_newa (gint, palette->priv->groups->len);
-  GtkTextDirection direction;
-
-  direction = gtk_widget_get_direction (widget);
-
-  GTK_WIDGET_CLASS (gtk_tool_palette_parent_class)->size_allocate (widget, allocation,
-                                                                   baseline, out_clip);
-
-  if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-    {
-      adjustment = palette->priv->vadjustment;
-      page_size = allocation->height;
-    }
-  else
-    {
-      adjustment = palette->priv->hadjustment;
-      page_size = allocation->width;
-    }
-
-  if (adjustment)
-    offset = gtk_adjustment_get_value (adjustment);
-  if (GTK_ORIENTATION_HORIZONTAL == palette->priv->orientation &&
-      GTK_TEXT_DIR_RTL == direction)
-    offset = -offset;
-
-  if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-    child_allocation.width = allocation->width;
-  else
-    child_allocation.height = allocation->height;
-
-  if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-    remaining_space = allocation->height;
-  else
-    remaining_space = allocation->width;
-
-  /* figure out the required size of all groups to be able to distribute the
-   * remaining space on allocation
-   */
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *group = g_ptr_array_index (palette->priv->groups, i);
-      gint size;
-
-      group_sizes[i] = 0;
-
-      if (!group->widget)
-        continue;
-
-      widget = GTK_WIDGET (group->widget);
-
-      if (gtk_tool_item_group_get_n_items (group->widget))
-        {
-          if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-            size = _gtk_tool_item_group_get_height_for_width (group->widget, child_allocation.width);
-          else
-            size = _gtk_tool_item_group_get_width_for_height (group->widget, child_allocation.height);
-
-          if (group->expand && !gtk_tool_item_group_get_collapsed (group->widget))
-            n_expand_groups += 1;
-        }
-      else
-        size = 0;
-
-      remaining_space -= size;
-      group_sizes[i] = size;
-
-      /* if the widget is currently expanding an offset which allows to
-       * display as much of the widget as possible is calculated
-       */
-      if (widget == palette->priv->expanding_child)
-        {
-          gint limit =
-            GTK_ORIENTATION_VERTICAL == palette->priv->orientation ?
-            child_allocation.width : child_allocation.height;
-
-          gint real_size;
-          guint j;
-
-          min_offset = 0;
-
-          for (j = 0; j < i; ++j)
-            min_offset += group_sizes[j];
-
-          max_offset = min_offset + group_sizes[i];
-
-          real_size = _gtk_tool_item_group_get_size_for_limit
-            (GTK_TOOL_ITEM_GROUP (widget), limit,
-             GTK_ORIENTATION_VERTICAL == palette->priv->orientation,
-             FALSE);
-
-          if (size == real_size)
-            palette->priv->expanding_child = NULL;
-        }
-    }
-
-  if (n_expand_groups > 0)
-    {
-      remaining_space = MAX (0, remaining_space);
-      expand_space = remaining_space / n_expand_groups;
-    }
-
-  if (max_offset != -1)
-    {
-      gint limit =
-        GTK_ORIENTATION_VERTICAL == palette->priv->orientation ?
-        allocation->height : allocation->width;
-
-      offset = MIN (MAX (offset, max_offset - limit), min_offset);
-    }
-
-  if (remaining_space > 0)
-    offset = 0;
-
-  x = allocation->x;
-  child_allocation.y = allocation->y;
-
-  if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-    child_allocation.y -= offset;
-  else
-    x -= offset;
-
-  /* allocate all groups at the calculated positions */
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *group = g_ptr_array_index (palette->priv->groups, i);
-
-      if (!group->widget)
-        continue;
-
-      if (gtk_tool_item_group_get_n_items (group->widget))
-        {
-          gint size = group_sizes[i];
-
-          if (group->expand && !gtk_tool_item_group_get_collapsed (group->widget))
-            {
-              size += MIN (expand_space, remaining_space);
-              remaining_space -= expand_space;
-            }
-
-          if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-            child_allocation.height = size;
-          else
-            child_allocation.width = size;
-
-          if (GTK_ORIENTATION_HORIZONTAL == palette->priv->orientation &&
-              GTK_TEXT_DIR_RTL == direction)
-            child_allocation.x = allocation->width - x - child_allocation.width;
-          else
-            child_allocation.x = x;
-
-          gtk_widget_size_allocate (GTK_WIDGET (group->widget), &child_allocation, -1, out_clip);
-          gtk_widget_show (GTK_WIDGET (group->widget));
-
-          if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-            child_allocation.y += child_allocation.height;
-          else
-            x += child_allocation.width;
-        }
-      else
-        gtk_widget_hide (GTK_WIDGET (group->widget));
-    }
-
-  if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation)
-    {
-      child_allocation.y += offset;
-
-      total_size = child_allocation.y;
-    }
-  else
-    {
-      x += offset;
-
-      total_size = x;
-    }
-
-  /* update the scrollbar to match the displayed adjustment */
-  if (adjustment)
-    {
-      gdouble lower, upper;
-
-      total_size = MAX (0, total_size);
-      page_size = MIN (total_size, page_size);
-
-      if (GTK_ORIENTATION_VERTICAL == palette->priv->orientation ||
-          GTK_TEXT_DIR_LTR == direction)
-        {
-          lower = 0;
-          upper = total_size;
-        }
-      else
-        {
-          lower = page_size - total_size;
-          upper = page_size;
-
-          offset = -offset;
-        }
-
-      gtk_adjustment_configure (adjustment,
-                                offset,
-                                lower,
-                                upper,
-                                page_size * 0.1,
-                                page_size * 0.9,
-                                page_size);
-    }
-}
-
-static void
-gtk_tool_palette_adjustment_value_changed (GtkAdjustment *adjustment,
-                                           gpointer       data)
-{
-  GtkAllocation allocation;
-  GtkAllocation clip;
-  GtkWidget *widget = GTK_WIDGET (data);
-
-  gtk_widget_get_allocation (widget, &allocation);
-  gtk_tool_palette_size_allocate (widget, &allocation, -1, &clip);
-}
-
-static void
-gtk_tool_palette_add (GtkContainer *container,
-                      GtkWidget    *child)
-{
-  GtkToolPalette *palette;
-  GtkToolItemGroupInfo *info = g_new0(GtkToolItemGroupInfo, 1);
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (container));
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (child));
-
-  palette = GTK_TOOL_PALETTE (container);
-
-  g_ptr_array_add (palette->priv->groups, info);
-  info->pos = palette->priv->groups->len - 1;
-  info->widget = (GtkToolItemGroup *)g_object_ref_sink (child);
-
-  gtk_widget_set_parent (child, GTK_WIDGET (palette));
-}
-
-static void
-gtk_tool_palette_remove (GtkContainer *container,
-                         GtkWidget    *child)
-{
-  GtkToolPalette *palette;
-  guint i;
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (container));
-  palette = GTK_TOOL_PALETTE (container);
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *info = g_ptr_array_index (palette->priv->groups, i);
-      if (GTK_WIDGET(info->widget) == child)
-        {
-          g_object_unref (child);
-          gtk_widget_unparent (child);
-
-          g_ptr_array_remove_index (palette->priv->groups, i);
-        }
-    }
-}
-
-static void
-gtk_tool_palette_forall (GtkContainer *container,
-                         GtkCallback   callback,
-                         gpointer      callback_data)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (container);
-  guint i, len;
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *info = g_ptr_array_index (palette->priv->groups, i);
-
-      len = palette->priv->groups->len;
-
-      if (info->widget)
-        callback (GTK_WIDGET (info->widget),
-                  callback_data);
-
-      /* At destroy time, 'callback' results in removing a widget,
-       * here we just reset the current index to account for the removed widget. */
-      i -= (len - palette->priv->groups->len);
-    }
-}
-
-static GType
-gtk_tool_palette_child_type (GtkContainer *container)
-{
-  return GTK_TYPE_TOOL_ITEM_GROUP;
-}
-
-static void
-gtk_tool_palette_set_child_property (GtkContainer *container,
-                                     GtkWidget    *child,
-                                     guint         prop_id,
-                                     const GValue *value,
-                                     GParamSpec   *pspec)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (container);
-
-  switch (prop_id)
-    {
-      case CHILD_PROP_EXCLUSIVE:
-        gtk_tool_palette_set_exclusive (palette, GTK_TOOL_ITEM_GROUP (child), 
-          g_value_get_boolean (value));
-        break;
-
-      case CHILD_PROP_EXPAND:
-        gtk_tool_palette_set_expand (palette, GTK_TOOL_ITEM_GROUP (child), 
-          g_value_get_boolean (value));
-        break;
-
-      default:
-        GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-gtk_tool_palette_get_child_property (GtkContainer *container,
-                                     GtkWidget    *child,
-                                     guint         prop_id,
-                                     GValue       *value,
-                                     GParamSpec   *pspec)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (container);
-
-  switch (prop_id)
-    {
-      case CHILD_PROP_EXCLUSIVE:
-        g_value_set_boolean (value, 
-          gtk_tool_palette_get_exclusive (palette, GTK_TOOL_ITEM_GROUP (child)));
-        break;
-
-      case CHILD_PROP_EXPAND:
-        g_value_set_boolean (value, 
-          gtk_tool_palette_get_expand (palette, GTK_TOOL_ITEM_GROUP (child)));
-        break;
-
-      default:
-        GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-gtk_tool_palette_display_changed (GtkWidget  *widget,
-                                  GdkDisplay *previous_display)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (widget);
-
-  gtk_tool_palette_reconfigured (palette);
-}
-
-static void
-gtk_tool_palette_snapshot (GtkWidget   *widget,
-                           GtkSnapshot *snapshot)
-{
-  gtk_snapshot_push_clip (snapshot,
-                          &GRAPHENE_RECT_INIT(
-                              0, 0,
-                              gtk_widget_get_width (widget),
-                              gtk_widget_get_height (widget)
-                          ), "ToolPalette Clip");
-
-  GTK_WIDGET_CLASS (gtk_tool_palette_parent_class)->snapshot (widget, snapshot);
-
-  gtk_snapshot_pop (snapshot);
-}
-
-static void
-gtk_tool_palette_class_init (GtkToolPaletteClass *cls)
-{
-  GObjectClass      *oclass   = G_OBJECT_CLASS (cls);
-  GtkWidgetClass    *wclass   = GTK_WIDGET_CLASS (cls);
-  GtkContainerClass *cclass   = GTK_CONTAINER_CLASS (cls);
-
-  oclass->set_property        = gtk_tool_palette_set_property;
-  oclass->get_property        = gtk_tool_palette_get_property;
-  oclass->dispose             = gtk_tool_palette_dispose;
-  oclass->finalize            = gtk_tool_palette_finalize;
-
-  wclass->measure             = gtk_tool_palette_measure;
-  wclass->size_allocate       = gtk_tool_palette_size_allocate;
-  wclass->snapshot            = gtk_tool_palette_snapshot;
-
-  cclass->add                 = gtk_tool_palette_add;
-  cclass->remove              = gtk_tool_palette_remove;
-  cclass->forall              = gtk_tool_palette_forall;
-  cclass->child_type          = gtk_tool_palette_child_type;
-  cclass->set_child_property  = gtk_tool_palette_set_child_property;
-  cclass->get_child_property  = gtk_tool_palette_get_child_property;
-
-  /* Handle display-changed so we can update our configuration.
-   */
-  wclass->display_changed      = gtk_tool_palette_display_changed;
-
-  g_object_class_override_property (oclass, PROP_ORIENTATION,    "orientation");
-
-  g_object_class_override_property (oclass, PROP_HADJUSTMENT,    "hadjustment");
-  g_object_class_override_property (oclass, PROP_VADJUSTMENT,    "vadjustment");
-  g_object_class_override_property (oclass, PROP_HSCROLL_POLICY, "hscroll-policy");
-  g_object_class_override_property (oclass, PROP_VSCROLL_POLICY, "vscroll-policy");
-
-  /**
-   * GtkToolPalette:toolbar-style:
-   *
-   * The style of items in the tool palette.
-   *
-   * Since: 2.20
-   */
-  g_object_class_install_property (oclass, PROP_TOOLBAR_STYLE,
-                                   g_param_spec_enum ("toolbar-style",
-                                                      P_("Toolbar Style"),
-                                                      P_("Style of items in the tool palette"),
-                                                      GTK_TYPE_TOOLBAR_STYLE,
-                                                      DEFAULT_TOOLBAR_STYLE,
-                                                      GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
-
-
-  /**
-   * GtkToolPalette:exclusive:
-   *
-   * Whether the item group should be the only one that is expanded
-   * at a given time.
-   *
-   * Since: 2.20
-   */
-  gtk_container_class_install_child_property (cclass, CHILD_PROP_EXCLUSIVE,
-                                              g_param_spec_boolean ("exclusive",
-                                                                    P_("Exclusive"),
-                                                                    P_("Whether the item group should be the only expanded at a given time"),
-                                                                    DEFAULT_CHILD_EXCLUSIVE,
-                                                                    GTK_PARAM_READWRITE));
-
-  /**
-   * GtkToolPalette:expand:
-   *
-   * Whether the item group should receive extra space when the palette grows.
-   * at a given time.
-   *
-   * Since: 2.20
-   */
-  gtk_container_class_install_child_property (cclass, CHILD_PROP_EXPAND,
-                                              g_param_spec_boolean ("expand",
-                                                                    P_("Expand"),
-                                                                    P_("Whether the item group should receive extra space when the palette grows"),
-                                                                    DEFAULT_CHILD_EXPAND,
-                                                                    GTK_PARAM_READWRITE));
-
-  gtk_widget_class_set_css_name (wclass, I_("toolpalette"));
-}
-
-/**
- * gtk_tool_palette_new:
- *
- * Creates a new tool palette.
- *
- * Returns: a new #GtkToolPalette
- *
- * Since: 2.20
- */
-GtkWidget*
-gtk_tool_palette_new (void)
-{
-  return g_object_new (GTK_TYPE_TOOL_PALETTE, NULL);
-}
-
-/* Set the "toolbar-style" property and do appropriate things.
- * GtkToolbar does this by emitting a signal instead of just
- * calling a function...
- */
-static void
-gtk_tool_palette_change_style (GtkToolPalette  *palette,
-                               GtkToolbarStyle  style)
-{
-  GtkToolPalettePrivate* priv = palette->priv;
-
-  if (priv->style != style)
-    {
-      priv->style = style;
-
-      gtk_tool_palette_reconfigured (palette);
-
-      gtk_widget_queue_resize (GTK_WIDGET (palette));
-      g_object_notify (G_OBJECT (palette), "toolbar-style");
-    }
-}
-
-
-/**
- * gtk_tool_palette_set_style:
- * @palette: a #GtkToolPalette
- * @style: the #GtkToolbarStyle that items in the tool palette shall have
- *
- * Sets the style (text, icons or both) of items in the tool palette.
- *
- * Since: 2.20
- */
-void
-gtk_tool_palette_set_style (GtkToolPalette  *palette,
-                            GtkToolbarStyle  style)
-{
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-
-  palette->priv->style_set = TRUE;
-  gtk_tool_palette_change_style (palette, style);
-}
-
-
-/**
- * gtk_tool_palette_unset_style:
- * @palette: a #GtkToolPalette
- *
- * Unsets a toolbar style set with gtk_tool_palette_set_style(),
- * so that user preferences will be used to determine the toolbar style.
- *
- * Since: 2.20
- */
-void
-gtk_tool_palette_unset_style (GtkToolPalette *palette)
-{
-  GtkToolPalettePrivate* priv = palette->priv;
-  GtkToolbarStyle style;
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-
-  if (priv->style_set)
-    {
-      style = DEFAULT_TOOLBAR_STYLE;
-
-      if (style != priv->style)
-        gtk_tool_palette_change_style (palette, style);
-
-      priv->style_set = FALSE;
-    }
-}
-
-/**
- * gtk_tool_palette_get_style:
- * @palette: a #GtkToolPalette
- *
- * Gets the style (icons, text or both) of items in the tool palette.
- *
- * Returns: the #GtkToolbarStyle of items in the tool palette.
- *
- * Since: 2.20
- */
-GtkToolbarStyle
-gtk_tool_palette_get_style (GtkToolPalette *palette)
-{
-  g_return_val_if_fail (GTK_IS_TOOL_PALETTE (palette), DEFAULT_TOOLBAR_STYLE);
-
-  return palette->priv->style;
-}
-
-static gint
-gtk_tool_palette_compare_groups (gconstpointer a,
-                                 gconstpointer b)
-{
-  const GtkToolItemGroupInfo *group_a = a;
-  const GtkToolItemGroupInfo *group_b = b;
-
-  return group_a->pos - group_b->pos;
-}
-
-/**
- * gtk_tool_palette_set_group_position:
- * @palette: a #GtkToolPalette
- * @group: a #GtkToolItemGroup which is a child of palette
- * @position: a new index for group
- *
- * Sets the position of the group as an index of the tool palette.
- * If position is 0 the group will become the first child, if position is
- * -1 it will become the last child.
- *
- * Since: 2.20
- */
-void
-gtk_tool_palette_set_group_position (GtkToolPalette   *palette,
-                                     GtkToolItemGroup *group,
-                                     gint             position)
-{
-  GtkToolItemGroupInfo *group_new;
-  GtkToolItemGroupInfo *group_old;
-  gint old_position;
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-  g_return_if_fail (position >= -1);
-
-  if (-1 == position)
-    position = palette->priv->groups->len - 1;
-
-  g_return_if_fail ((guint) position < palette->priv->groups->len);
-
-  group_new = g_ptr_array_index (palette->priv->groups, position);
-
-  if (GTK_TOOL_ITEM_GROUP (group) == group_new->widget)
-    return;
-
-  old_position = gtk_tool_palette_get_group_position (palette, group);
-  g_return_if_fail (old_position >= 0);
-
-  group_old = g_ptr_array_index (palette->priv->groups, old_position);
-
-  group_new->pos = position;
-  group_old->pos = old_position;
-
-  g_ptr_array_sort (palette->priv->groups, gtk_tool_palette_compare_groups);
-
-  gtk_widget_queue_resize (GTK_WIDGET (palette));
-}
-
-static void
-gtk_tool_palette_group_notify_collapsed (GtkToolItemGroup *group,
-                                         GParamSpec       *pspec,
-                                         gpointer          data)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (data);
-  guint i;
-
-  if (gtk_tool_item_group_get_collapsed (group))
-    return;
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *info = g_ptr_array_index (palette->priv->groups, i);
-      GtkToolItemGroup *current_group = info->widget;
-
-      if (current_group && current_group != group)
-        gtk_tool_item_group_set_collapsed (current_group, TRUE);
-    }
-}
-
-/**
- * gtk_tool_palette_set_exclusive:
- * @palette: a #GtkToolPalette
- * @group: a #GtkToolItemGroup which is a child of palette
- * @exclusive: whether the group should be exclusive or not
- *
- * Sets whether the group should be exclusive or not.
- * If an exclusive group is expanded all other groups are collapsed.
- *
- * Since: 2.20
- */
-void
-gtk_tool_palette_set_exclusive (GtkToolPalette   *palette,
-                                GtkToolItemGroup *group,
-                                gboolean          exclusive)
-{
-  GtkToolItemGroupInfo *group_info;
-  gint position;
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-
-  position = gtk_tool_palette_get_group_position (palette, group);
-  g_return_if_fail (position >= 0);
-
-  group_info = g_ptr_array_index (palette->priv->groups, position);
-
-  if (exclusive == group_info->exclusive)
-    return;
-
-  group_info->exclusive = exclusive;
-
-  if (group_info->exclusive != (0 != group_info->notify_collapsed))
-    {
-      if (group_info->exclusive)
-        {
-          group_info->notify_collapsed =
-            g_signal_connect (group, "notify::collapsed",
-                              G_CALLBACK (gtk_tool_palette_group_notify_collapsed),
-                              palette);
-        }
-      else
-        {
-          g_signal_handler_disconnect (group, group_info->notify_collapsed);
-          group_info->notify_collapsed = 0;
-        }
-    }
-
-  gtk_tool_palette_group_notify_collapsed (group_info->widget, NULL, palette);
-  gtk_widget_child_notify (GTK_WIDGET (group), "exclusive");
-}
-
-/**
- * gtk_tool_palette_set_expand:
- * @palette: a #GtkToolPalette
- * @group: a #GtkToolItemGroup which is a child of palette
- * @expand: whether the group should be given extra space
- *
- * Sets whether the group should be given extra space.
- *
- * Since: 2.20
- */
-void
-gtk_tool_palette_set_expand (GtkToolPalette   *palette,
-                             GtkToolItemGroup *group,
-                             gboolean        expand)
-{
-  GtkToolItemGroupInfo *group_info;
-  gint position;
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-  g_return_if_fail (GTK_IS_TOOL_ITEM_GROUP (group));
-
-  position = gtk_tool_palette_get_group_position (palette, group);
-  g_return_if_fail (position >= 0);
-
-  group_info = g_ptr_array_index (palette->priv->groups, position);
-
-  if (expand != group_info->expand)
-    {
-      group_info->expand = expand;
-      gtk_widget_queue_resize (GTK_WIDGET (palette));
-      gtk_widget_child_notify (GTK_WIDGET (group), "expand");
-    }
-}
-
-/**
- * gtk_tool_palette_get_group_position:
- * @palette: a #GtkToolPalette
- * @group: a #GtkToolItemGroup
- *
- * Gets the position of @group in @palette as index.
- * See gtk_tool_palette_set_group_position().
- *
- * Returns: the index of group or -1 if @group is not a child of @palette
- *
- * Since: 2.20
- */
-gint
-gtk_tool_palette_get_group_position (GtkToolPalette   *palette,
-                                     GtkToolItemGroup *group)
-{
-  guint i;
-
-  g_return_val_if_fail (GTK_IS_TOOL_PALETTE (palette), -1);
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), -1);
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *info = g_ptr_array_index (palette->priv->groups, i);
-      if ((gpointer) group == info->widget)
-        return i;
-    }
-
-  return -1;
-}
-
-/**
- * gtk_tool_palette_get_exclusive:
- * @palette: a #GtkToolPalette
- * @group: a #GtkToolItemGroup which is a child of palette
- *
- * Gets whether @group is exclusive or not.
- * See gtk_tool_palette_set_exclusive().
- *
- * Returns: %TRUE if @group is exclusive
- *
- * Since: 2.20
- */
-gboolean
-gtk_tool_palette_get_exclusive (GtkToolPalette   *palette,
-                                GtkToolItemGroup *group)
-{
-  gint position;
-  GtkToolItemGroupInfo *info;
-
-  g_return_val_if_fail (GTK_IS_TOOL_PALETTE (palette), DEFAULT_CHILD_EXCLUSIVE);
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), DEFAULT_CHILD_EXCLUSIVE);
-
-  position = gtk_tool_palette_get_group_position (palette, group);
-  g_return_val_if_fail (position >= 0, DEFAULT_CHILD_EXCLUSIVE);
-
-  info = g_ptr_array_index (palette->priv->groups, position);
-
-  return info->exclusive;
-}
-
-/**
- * gtk_tool_palette_get_expand:
- * @palette: a #GtkToolPalette
- * @group: a #GtkToolItemGroup which is a child of palette
- *
- * Gets whether group should be given extra space.
- * See gtk_tool_palette_set_expand().
- *
- * Returns: %TRUE if group should be given extra space, %FALSE otherwise
- *
- * Since: 2.20
- */
-gboolean
-gtk_tool_palette_get_expand (GtkToolPalette   *palette,
-                             GtkToolItemGroup *group)
-{
-  gint position;
-  GtkToolItemGroupInfo *info;
-
-  g_return_val_if_fail (GTK_IS_TOOL_PALETTE (palette), DEFAULT_CHILD_EXPAND);
-  g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (group), DEFAULT_CHILD_EXPAND);
-
-  position = gtk_tool_palette_get_group_position (palette, group);
-  g_return_val_if_fail (position >= 0, DEFAULT_CHILD_EXPAND);
-
-  info = g_ptr_array_index (palette->priv->groups, position);
-
-  return info->expand;
-}
-
-/**
- * gtk_tool_palette_get_drop_item:
- * @palette: a #GtkToolPalette
- * @x: the x position
- * @y: the y position
- *
- * Gets the item at position (x, y).
- * See gtk_tool_palette_get_drop_group().
- *
- * Returns: (nullable) (transfer none): the #GtkToolItem at position or %NULL if there is no such item
- *
- * Since: 2.20
- */
-GtkToolItem*
-gtk_tool_palette_get_drop_item (GtkToolPalette *palette,
-                                gint            x,
-                                gint            y)
-{
-  GtkAllocation allocation;
-  GtkToolItemGroup *group = gtk_tool_palette_get_drop_group (palette, x, y);
-  GtkWidget *widget = GTK_WIDGET (group);
-
-  if (group)
-    {
-      gtk_widget_get_allocation (widget, &allocation);
-      return gtk_tool_item_group_get_drop_item (group,
-                                                x - allocation.x,
-                                                y - allocation.y);
-    }
-
-  return NULL;
-}
-
-/**
- * gtk_tool_palette_get_drop_group:
- * @palette: a #GtkToolPalette
- * @x: the x position
- * @y: the y position
- *
- * Gets the group at position (x, y).
- *
- * Returns: (nullable) (transfer none): the #GtkToolItemGroup at position
- * or %NULL if there is no such group
- *
- * Since: 2.20
- */
-GtkToolItemGroup*
-gtk_tool_palette_get_drop_group (GtkToolPalette *palette,
-                                 gint            x,
-                                 gint            y)
-{
-  GtkAllocation allocation;
-  guint i;
-
-  g_return_val_if_fail (GTK_IS_TOOL_PALETTE (palette), NULL);
-
-  gtk_widget_get_allocation (GTK_WIDGET (palette), &allocation);
-
-  g_return_val_if_fail (x >= 0 && x < allocation.width, NULL);
-  g_return_val_if_fail (y >= 0 && y < allocation.height, NULL);
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *group = g_ptr_array_index (palette->priv->groups, i);
-      GtkWidget *widget;
-      gint x0, y0;
-
-      if (!group->widget)
-        continue;
-
-      widget = GTK_WIDGET (group->widget);
-      gtk_widget_get_allocation (widget, &allocation);
-
-      x0 = x - allocation.x;
-      y0 = y - allocation.y;
-
-      if (x0 >= 0 && x0 < allocation.width &&
-          y0 >= 0 && y0 < allocation.height)
-        return GTK_TOOL_ITEM_GROUP (widget);
-    }
-
-  return NULL;
-}
-
-/**
- * gtk_tool_palette_get_drag_item:
- * @palette: a #GtkToolPalette
- * @selection: a #GtkSelectionData
- *
- * Get the dragged item from the selection.
- * This could be a #GtkToolItem or a #GtkToolItemGroup.
- *
- * Returns: (transfer none): the dragged item in selection
- *
- * Since: 2.20
- */
-GtkWidget*
-gtk_tool_palette_get_drag_item (GtkToolPalette         *palette,
-                                const GtkSelectionData *selection)
-{
-  GtkToolPaletteDragData *data;
-  GdkAtom target;
-
-  g_return_val_if_fail (GTK_IS_TOOL_PALETTE (palette), NULL);
-  g_return_val_if_fail (NULL != selection, NULL);
-
-  g_return_val_if_fail (gtk_selection_data_get_format (selection) == 8, NULL);
-  g_return_val_if_fail (gtk_selection_data_get_length (selection) == sizeof (GtkToolPaletteDragData), NULL);
-  target = gtk_selection_data_get_target (selection);
-  g_return_val_if_fail (target == dnd_target_atom_item ||
-                        target == dnd_target_atom_group,
-                        NULL);
-
-  data = (GtkToolPaletteDragData*) gtk_selection_data_get_data (selection);
-
-  g_return_val_if_fail (data->palette == palette, NULL);
-
-  if (dnd_target_atom_item == target)
-    g_return_val_if_fail (GTK_IS_TOOL_ITEM (data->item), NULL);
-  else if (dnd_target_atom_group == target)
-    g_return_val_if_fail (GTK_IS_TOOL_ITEM_GROUP (data->item), NULL);
-
-  return data->item;
-}
-
-/**
- * gtk_tool_palette_set_drag_source:
- * @palette: a #GtkToolPalette
- * @targets: the #GtkToolPaletteDragTargets
- *     which the widget should support
- *
- * Sets the tool palette as a drag source.
- * Enables all groups and items in the tool palette as drag sources
- * on button 1 and button 3 press with copy and move actions.
- * See gtk_drag_source_set().
- *
- * Since: 2.20
- */
-void
-gtk_tool_palette_set_drag_source (GtkToolPalette            *palette,
-                                  GtkToolPaletteDragTargets  targets)
-{
-  guint i;
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-
-  if ((palette->priv->drag_source & targets) == targets)
-    return;
-
-  palette->priv->drag_source |= targets;
-
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkToolItemGroupInfo *info = g_ptr_array_index (palette->priv->groups, i);
-      if (info->widget)
-        gtk_container_forall (GTK_CONTAINER (info->widget),
-                              _gtk_tool_palette_child_set_drag_source,
-                              palette);
-    }
-}
-
-/**
- * gtk_tool_palette_add_drag_dest:
- * @palette: a #GtkToolPalette
- * @widget: a #GtkWidget which should be a drag destination for @palette
- * @flags: the flags that specify what actions GTK+ should take for drops
- *     on that widget
- * @targets: the #GtkToolPaletteDragTargets which the widget
- *     should support
- * @actions: the #GdkDragActions which the widget should suppport
- *
- * Sets @palette as drag source (see gtk_tool_palette_set_drag_source())
- * and sets @widget as a drag destination for drags from @palette.
- * See gtk_drag_dest_set().
- *
- * Since: 2.20
- */
-void
-gtk_tool_palette_add_drag_dest (GtkToolPalette            *palette,
-                                GtkWidget                 *widget,
-                                GtkDestDefaults            flags,
-                                GtkToolPaletteDragTargets  targets,
-                                GdkDragAction              actions)
-{
-  const char *entries[G_N_ELEMENTS (dnd_targets)];
-  gint n_entries = 0;
-  GdkContentFormats *list;
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-  g_return_if_fail (GTK_IS_WIDGET (widget));
-
-  gtk_tool_palette_set_drag_source (palette,
-                                    targets);
-
-  if (targets & GTK_TOOL_PALETTE_DRAG_ITEMS)
-    entries[n_entries++] = dnd_targets[0];
-  if (targets & GTK_TOOL_PALETTE_DRAG_GROUPS)
-    entries[n_entries++] = dnd_targets[1];
-
-  list = gdk_content_formats_new (entries, n_entries);
-  gtk_drag_dest_set (widget, flags, list, actions);
-  gdk_content_formats_unref (list);
-}
-
-void
-_gtk_tool_palette_get_item_size (GtkToolPalette *palette,
-                                 GtkRequisition *item_size,
-                                 gboolean        homogeneous_only,
-                                 gint           *requested_rows)
-{
-  GtkRequisition max_requisition;
-  gint max_rows;
-  guint i;
-
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-  g_return_if_fail (NULL != item_size);
-
-  max_requisition.width = 0;
-  max_requisition.height = 0;
-  max_rows = 0;
-
-  /* iterate over all groups and calculate the max item_size and max row request */
-  for (i = 0; i < palette->priv->groups->len; ++i)
-    {
-      GtkRequisition requisition;
-      gint rows;
-      GtkToolItemGroupInfo *group = g_ptr_array_index (palette->priv->groups, i);
-
-      if (!group->widget)
-        continue;
-
-      _gtk_tool_item_group_item_size_request (group->widget, &requisition, homogeneous_only, &rows);
-
-      max_requisition.width = MAX (max_requisition.width, requisition.width);
-      max_requisition.height = MAX (max_requisition.height, requisition.height);
-      max_rows = MAX (max_rows, rows);
-    }
-
-  *item_size = max_requisition;
-  if (requested_rows)
-    *requested_rows = max_rows;
-}
-
-static void
-gtk_tool_palette_item_drag_data_get (GtkWidget        *widget,
-                                     GdkDragContext   *context,
-                                     GtkSelectionData *selection,
-                                     guint             time,
-                                     gpointer          data)
-{
-  GtkToolPaletteDragData drag_data = { GTK_TOOL_PALETTE (data), NULL };
-  GdkAtom target;
-
-  target = gtk_selection_data_get_target (selection);
-
-  if (target == dnd_target_atom_item)
-    drag_data.item = gtk_widget_get_ancestor (widget, GTK_TYPE_TOOL_ITEM);
-
-  if (drag_data.item)
-    gtk_selection_data_set (selection, target, 8,
-                            (guchar*) &drag_data, sizeof (drag_data));
-}
-
-static void
-gtk_tool_palette_child_drag_data_get (GtkWidget        *widget,
-                                      GdkDragContext   *context,
-                                      GtkSelectionData *selection,
-                                      guint             info,
-                                      guint             time,
-                                      gpointer          data)
-{
-  GtkToolPaletteDragData drag_data = { GTK_TOOL_PALETTE (data), NULL };
-  GdkAtom target;
-
-  target = gtk_selection_data_get_target (selection);
-
-  if (target == dnd_target_atom_group)
-    drag_data.item = gtk_widget_get_ancestor (widget, GTK_TYPE_TOOL_ITEM_GROUP);
-
-  if (drag_data.item)
-    gtk_selection_data_set (selection, target, 8,
-                            (guchar*) &drag_data, sizeof (drag_data));
-}
-
-void
-_gtk_tool_palette_child_set_drag_source (GtkWidget *child,
-                                         gpointer   data)
-{
-  GtkToolPalette *palette = GTK_TOOL_PALETTE (data);
-
-  /* Check drag_source,
-   * to work properly when called from gtk_tool_item_group_insert().
-   */
-  if (!palette->priv->drag_source)
-    return;
-
-  if (GTK_IS_TOOL_ITEM (child) &&
-      (palette->priv->drag_source & GTK_TOOL_PALETTE_DRAG_ITEMS))
-    {
-      GdkContentFormats *targets;
-
-      /* Connect to child instead of the item itself,
-       * to work arround bug 510377.
-       */
-      if (GTK_IS_TOOL_BUTTON (child))
-        child = gtk_bin_get_child (GTK_BIN (child));
-
-      if (!child)
-        return;
-
-      targets = gdk_content_formats_new (&dnd_targets[0], 1);
-      gtk_drag_source_set (child, GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
-                           targets, GDK_ACTION_COPY | GDK_ACTION_MOVE);
-      gdk_content_formats_unref (targets);
-
-      g_signal_connect (child, "drag-data-get",
-                        G_CALLBACK (gtk_tool_palette_item_drag_data_get),
-                        palette);
-    }
-  else if (GTK_IS_BUTTON (child) &&
-           (palette->priv->drag_source & GTK_TOOL_PALETTE_DRAG_GROUPS))
-    {
-      GdkContentFormats *targets;
-
-      targets = gdk_content_formats_new (&dnd_targets[1], 1);
-      gtk_drag_source_set (child, GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
-                           targets, GDK_ACTION_COPY | GDK_ACTION_MOVE);
-      gdk_content_formats_unref (targets);
-
-      g_signal_connect (child, "drag-data-get",
-                        G_CALLBACK (gtk_tool_palette_child_drag_data_get),
-                        palette);
-    }
-}
-
-/**
- * gtk_tool_palette_get_drag_target_item:
- *
- * Gets the mime type for a dragged #GtkToolItem.
- *
- * Returns: (transfer none): the #GtkTargetEntry for a dragged item.
- *
- * Since: 2.20
- */
-const char *
-gtk_tool_palette_get_drag_target_item (void)
-{
-  return dnd_targets[0];
-}
-
-/**
- * gtk_tool_palette_get_drag_target_group:
- *
- * Get the target entry for a dragged #GtkToolItemGroup.
- *
- * Returns: (transfer none): the #GtkTargetEntry for a dragged group
- *
- * Since: 2.20
- */
-const char *
-gtk_tool_palette_get_drag_target_group (void)
-{
-  return dnd_targets[1];
-}
-
-void
-_gtk_tool_palette_set_expanding_child (GtkToolPalette *palette,
-                                       GtkWidget      *widget)
-{
-  g_return_if_fail (GTK_IS_TOOL_PALETTE (palette));
-  palette->priv->expanding_child = widget;
-}
-
-static void
-gtk_tool_palette_set_hadjustment (GtkToolPalette *palette,
-                                  GtkAdjustment  *adjustment)
-{
-  GtkToolPalettePrivate *priv = palette->priv;
-
-  if (adjustment && priv->hadjustment == adjustment)
-    return;
-
-  if (priv->hadjustment != NULL)
-    {
-      g_signal_handlers_disconnect_by_func (priv->hadjustment,
-                                            gtk_tool_palette_adjustment_value_changed,
-                                            palette);
-      g_object_unref (priv->hadjustment);
-    }
-
-  if (adjustment == NULL)
-    adjustment = gtk_adjustment_new (0.0, 0.0, 0.0,
-                                     0.0, 0.0, 0.0);
-
-  g_signal_connect (adjustment, "value-changed",
-                    G_CALLBACK (gtk_tool_palette_adjustment_value_changed),
-                    palette);
-  priv->hadjustment = g_object_ref_sink (adjustment);
-  /* FIXME: Adjustment should probably have its values updated now */
-  g_object_notify (G_OBJECT (palette), "hadjustment");
-}
-
-static void
-gtk_tool_palette_set_vadjustment (GtkToolPalette *palette,
-                                  GtkAdjustment  *adjustment)
-{
-  GtkToolPalettePrivate *priv = palette->priv;
-
-  if (adjustment && priv->vadjustment == adjustment)
-    return;
-
-  if (priv->vadjustment != NULL)
-    {
-      g_signal_handlers_disconnect_by_func (priv->vadjustment,
-                                            gtk_tool_palette_adjustment_value_changed,
-                                            palette);
-      g_object_unref (priv->vadjustment);
-    }
-
-  if (adjustment == NULL)
-    adjustment = gtk_adjustment_new (0.0, 0.0, 0.0,
-                                     0.0, 0.0, 0.0);
-
-  g_signal_connect (adjustment, "value-changed",
-                    G_CALLBACK (gtk_tool_palette_adjustment_value_changed),
-                    palette);
-  priv->vadjustment = g_object_ref_sink (adjustment);
-  /* FIXME: Adjustment should probably have its values updated now */
-  g_object_notify (G_OBJECT (palette), "vadjustment");
-}
-
-GtkSizeGroup *
-_gtk_tool_palette_get_size_group (GtkToolPalette *palette)
-{
-  g_return_val_if_fail (GTK_IS_TOOL_PALETTE (palette), NULL);
-
-  return palette->priv->text_size_group;
-}
diff --git a/gtk/gtktoolpalette.h b/gtk/gtktoolpalette.h
deleted file mode 100644 (file)
index f717bef..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-/* GtkToolPalette -- A tool palette with categories and DnD support
- * Copyright (C) 2008  Openismus GmbH
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *      Mathias Hasselmann
- */
-
-#ifndef __GTK_TOOL_PALETTE_H__
-#define __GTK_TOOL_PALETTE_H__
-
-#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
-#error "Only <gtk/gtk.h> can be included directly."
-#endif
-
-#include <gtk/gtkcontainer.h>
-#include <gtk/gtkdnd.h>
-#include <gtk/gtktoolitem.h>
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_TOOL_PALETTE           (gtk_tool_palette_get_type ())
-#define GTK_TOOL_PALETTE(obj)           (G_TYPE_CHECK_INSTANCE_CAST (obj, GTK_TYPE_TOOL_PALETTE, GtkToolPalette))
-#define GTK_TOOL_PALETTE_CLASS(cls)     (G_TYPE_CHECK_CLASS_CAST (cls, GTK_TYPE_TOOL_PALETTE, GtkToolPaletteClass))
-#define GTK_IS_TOOL_PALETTE(obj)        (G_TYPE_CHECK_INSTANCE_TYPE (obj, GTK_TYPE_TOOL_PALETTE))
-#define GTK_IS_TOOL_PALETTE_CLASS(obj)  (G_TYPE_CHECK_CLASS_TYPE (obj, GTK_TYPE_TOOL_PALETTE))
-#define GTK_TOOL_PALETTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TOOL_PALETTE, GtkToolPaletteClass))
-
-typedef struct _GtkToolPalette           GtkToolPalette;
-typedef struct _GtkToolPaletteClass      GtkToolPaletteClass;
-typedef struct _GtkToolPalettePrivate    GtkToolPalettePrivate;
-
-/**
- * GtkToolPaletteDragTargets:
- * @GTK_TOOL_PALETTE_DRAG_ITEMS: Support drag of items.
- * @GTK_TOOL_PALETTE_DRAG_GROUPS: Support drag of groups.
- *
- * Flags used to specify the supported drag targets.
- */
-typedef enum /*< flags >*/
-{
-  GTK_TOOL_PALETTE_DRAG_ITEMS = (1 << 0),
-  GTK_TOOL_PALETTE_DRAG_GROUPS = (1 << 1)
-}
-GtkToolPaletteDragTargets;
-
-/**
- * GtkToolPalette:
- *
- * This should not be accessed directly. Use the accessor functions below.
- */
-struct _GtkToolPalette
-{
-  GtkContainer parent_instance;
-  GtkToolPalettePrivate *priv;
-};
-
-/**
- * GtkToolPaletteClass:
- * @parent_class: The parent class.
- */
-struct _GtkToolPaletteClass
-{
-  GtkContainerClass parent_class;
-
-  /*< private >*/
-
-  /* Padding for future expansion */
-  void (*_gtk_reserved1) (void);
-  void (*_gtk_reserved2) (void);
-  void (*_gtk_reserved3) (void);
-  void (*_gtk_reserved4) (void);
-};
-
-GDK_AVAILABLE_IN_ALL
-GType                          gtk_tool_palette_get_type              (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-GtkWidget*                     gtk_tool_palette_new                   (void);
-
-GDK_AVAILABLE_IN_ALL
-void                           gtk_tool_palette_set_group_position    (GtkToolPalette            *palette,
-                                                                       GtkToolItemGroup          *group,
-                                                                       gint                       position);
-GDK_AVAILABLE_IN_ALL
-void                           gtk_tool_palette_set_exclusive         (GtkToolPalette            *palette,
-                                                                       GtkToolItemGroup          *group,
-                                                                       gboolean                   exclusive);
-GDK_AVAILABLE_IN_ALL
-void                           gtk_tool_palette_set_expand            (GtkToolPalette            *palette,
-                                                                       GtkToolItemGroup          *group,
-                                                                       gboolean                   expand);
-
-GDK_AVAILABLE_IN_ALL
-gint                           gtk_tool_palette_get_group_position    (GtkToolPalette            *palette,
-                                                                       GtkToolItemGroup          *group);
-GDK_AVAILABLE_IN_ALL
-gboolean                       gtk_tool_palette_get_exclusive         (GtkToolPalette            *palette,
-                                                                       GtkToolItemGroup          *group);
-GDK_AVAILABLE_IN_ALL
-gboolean                       gtk_tool_palette_get_expand            (GtkToolPalette            *palette,
-                                                                       GtkToolItemGroup          *group);
-
-GDK_AVAILABLE_IN_ALL
-void                           gtk_tool_palette_set_style             (GtkToolPalette            *palette,
-                                                                       GtkToolbarStyle            style);
-GDK_AVAILABLE_IN_ALL
-void                           gtk_tool_palette_unset_style           (GtkToolPalette            *palette);
-
-GDK_AVAILABLE_IN_ALL
-GtkToolbarStyle                gtk_tool_palette_get_style             (GtkToolPalette            *palette);
-
-GDK_AVAILABLE_IN_ALL
-GtkToolItem*                   gtk_tool_palette_get_drop_item         (GtkToolPalette            *palette,
-                                                                       gint                       x,
-                                                                       gint                       y);
-GDK_AVAILABLE_IN_ALL
-GtkToolItemGroup*              gtk_tool_palette_get_drop_group        (GtkToolPalette            *palette,
-                                                                       gint                       x,
-                                                                       gint                       y);
-GDK_AVAILABLE_IN_ALL
-GtkWidget*                     gtk_tool_palette_get_drag_item         (GtkToolPalette            *palette,
-                                                                       const GtkSelectionData    *selection);
-
-GDK_AVAILABLE_IN_ALL
-void                           gtk_tool_palette_set_drag_source       (GtkToolPalette            *palette,
-                                                                       GtkToolPaletteDragTargets  targets);
-GDK_AVAILABLE_IN_ALL
-void                           gtk_tool_palette_add_drag_dest         (GtkToolPalette            *palette,
-                                                                       GtkWidget                 *widget,
-                                                                       GtkDestDefaults            flags,
-                                                                       GtkToolPaletteDragTargets  targets,
-                                                                       GdkDragAction              actions);
-
-GDK_AVAILABLE_IN_ALL
-const char *                   gtk_tool_palette_get_drag_target_item  (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-const char *                   gtk_tool_palette_get_drag_target_group (void) G_GNUC_CONST;
-
-
-G_END_DECLS
-
-#endif /* __GTK_TOOL_PALETTE_H__ */
diff --git a/gtk/gtktoolpaletteprivate.h b/gtk/gtktoolpaletteprivate.h
deleted file mode 100644 (file)
index a2e94e2..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* GtkToolPalette -- A tool palette with categories and DnD support
- * Copyright (C) 2008  Openismus GmbH
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *      Mathias Hasselmann
- */
-
-#ifndef __GTK_TOOL_PALETTE_PRIVATE_H__
-#define __GTK_TOOL_PALETTE_PRIVATE_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-void _gtk_tool_palette_get_item_size           (GtkToolPalette   *palette,
-                                                GtkRequisition   *item_size,
-                                                gboolean          homogeneous_only,
-                                                gint             *requested_rows);
-void _gtk_tool_palette_child_set_drag_source   (GtkWidget        *widget,
-                                                gpointer          data);
-void _gtk_tool_palette_set_expanding_child     (GtkToolPalette   *palette,
-                                                GtkWidget        *widget);
-
-void _gtk_tool_item_group_palette_reconfigured (GtkToolItemGroup *group);
-void _gtk_tool_item_group_item_size_request    (GtkToolItemGroup *group,
-                                                GtkRequisition   *item_size,
-                                                gboolean          homogeneous_only,
-                                                gint             *requested_rows);
-gint _gtk_tool_item_group_get_height_for_width (GtkToolItemGroup *group,
-                                                gint              width);
-gint _gtk_tool_item_group_get_width_for_height (GtkToolItemGroup *group,
-                                                gint              height);
-gint _gtk_tool_item_group_get_size_for_limit   (GtkToolItemGroup *group,
-                                                gint              limit,
-                                                gboolean          vertical,
-                                                gboolean          animation);
-
-
-GtkSizeGroup *_gtk_tool_palette_get_size_group (GtkToolPalette   *palette);
-
-G_END_DECLS
-
-#endif /* __GTK_TOOL_PALETTE_PRIVATE_H__ */
index b80ec6aae8b4e11c69dcc137c5129adfe59287aa..e3e5c7d350c823c2797fdd9a3101bc8bfb475699 100644 (file)
@@ -337,8 +337,6 @@ gtk_public_sources = files([
   'gtktoolbar.c',
   'gtktoolbutton.c',
   'gtktoolitem.c',
-  'gtktoolitemgroup.c',
-  'gtktoolpalette.c',
   'gtktoolshell.c',
   'gtktooltip.c',
   'gtktooltipwindow.c',
@@ -559,8 +557,6 @@ gtk_public_headers = files([
   'gtktoolbar.h',
   'gtktoolbutton.h',
   'gtktoolitem.h',
-  'gtktoolitemgroup.h',
-  'gtktoolpalette.h',
   'gtktoolshell.h',
   'gtktooltip.h',
   'gtktreednd.h',
index 2c22455dfda1fa108abfe826b70388f761a5efac..b65fafddb24ef19cb21d1a73746e7b7e9cec61fd 100644 (file)
@@ -280,8 +280,6 @@ gtk/gtktoggletoolbutton.c
 gtk/gtktoolbar.c
 gtk/gtktoolbutton.c
 gtk/gtktoolitem.c
-gtk/gtktoolitemgroup.c
-gtk/gtktoolpalette.c
 gtk/gtktoolshell.c
 gtk/gtktooltipwindow.c
 gtk/gtktrashmonitor.c